Аттрибут - это просто объект класса Attribute или его наследников. У него есть некоторые особенности, но в целом он очень прост. У него отсутствует функциональность, кроме хранения некоторых данных.
в методе GetStandardValues есть параметр context. Через него вы сможете получить Instance, то есть вам объект, которому это свойство принадлежит. И, соответственно, можете на лету сформировать любую коллекцию выпадающих значений.
Аттрибуты - это способ добавить некоторую информацию к различным элементам класса. В данном случае к свойству прикрепляется информация о том, как конвертер нужно использовать в данном случае. PropertyGrid умеет извлекать эту информацию и соответствующе интерпретировать.
В общем и целом, вы можете сами определять свои аттрибуты, прикреплять из к разным элементам (свойствам, полям, методам, классам, конструкторам) и в своих контролах анализировать аттрибуты и как-нибудь модифицировать поведение. Можете погуглить: Аспектно-Ориентированное программирование. Аттрибуты - один из способов реализации.
Я когда в свое время разбирался с PropertyGrid первые адекватные примеры с каким-то описанием на русском нашел тут. Дальше много интересного нашел здесь, но здесь на английском. Ну и потом сам много экспериментировал.
Что касается TypeConverter. Когда PropertyGrid необходимо отобразить значение свойства или когда кто-то ввел новое значение свойства, он ищет для типа этого значения стандартный TypeConverter, с помощью которого преобразовывает в/из строки тип этого свойства (ведь "все" что вводится или отображается это строка).
Но есть пара моментов.
1. С помощью аттрибута [TypeConverter(typeof(НашСобственныйTypeConverter))] поставленного непосредственно перед свойством можно стандартный TypeConverter конкретно вот для этого свойства переопределить. И в этот НашСобственныйTypeConverter можно запихнуть любую логику работы.
2. Кроме преобразования типов TypeConverter умеет делать простейший выпадающий список. Может реализовывать подсвойства для реализации поведения Expandable. Ну и еще пару фокусов.
3. Кстати, преобразование типов производится с помощью переопределения методов ConvertTo и ConvertFrom.
4. Много полезной информации о том, в каком окружении происходит преобразование содержится в ITypeDescriptorContext context. Предлагаю вам установить там точку останова ("breakpoint") и поизучать содержимое context.
5. Кроме TypeConverter`а есть очень полезный аттрибут [Editor(typeof(НашСобственныйEditor), typeof(UITypeEditor) )].
Он позволяет реализовывать собственные редакторы для свойств. Например посмотрите как реализовано свойство Dock у любого Control`а в VisualStudio. Или можно реализовать редактирование свойства не в выпадающем Control`е, а отдельный диалоговым окном, как у свойства BackgroundImage, например.
Magentius`у: я когда бегал по утрам, весь парк вдоль и поперек, вверх и вниз перебегал. Время на тренировку все равно ограничено, до новых мест еще время нужно чтобы добраться и не особо охота выхлопом дышать - еще неизвестно будет ли польза от пробежки больше, чем вред от смога. Павлу Волынцеву Я по пути на работу ищу фитнес-клубы. И подальше от холодильника как раз =).
Точно наручный кардиомонитор килокалории все равно не насчитает.....там от очень большого количества параметров зависит. Но как тренировочный абстрактный параметр интегрального энергопотребления в "эльфиских джоулях" вполне сойдет, чтоб от тренировки до тренировки контролировать прогресс/регресс.
Вы сами пользуетесь в тренировках кардиомонитором? Боюсь сорваться в фалометрию, но какое у вас потребление килокалорий за тренировку? Или какую величину потребления считаете нормальной при работе с гирей?
Что-то я так и не смог себя в итоге заставить заниматься дома. Осознанно, регулярно, с разминкой. Для себя отличный метод мотивации выбрал - это купить абонемент в фитнес-клуб и отрабатывать его - не заниматься жаба давит =). Плюс люди в клубе смотрят на тебя. Как-то неудобно халтурить. Плюс наручный кардиомонитор не дает халтурить. По пульсу сразу видно: на пользу занимаешься или так...видимость создаешь =).
Павел Волынцев интересовался какие именно каши я имею в виду.
Тут идея не в кашах.
Главное тут - баланс калорий: сколько поступает и сколько тратится. Чтобы выдержать этот баланс нужно умело управлять аппетитом/голодом.
Есть такое понятие гликемический индекс. Продукты с высоким гликемическим индексом усваиваются быстро и опять хочется что-нибудь съесть. Продукты с низким гликемическим индексом усваиваются долго и долго поддерживают ощущение сытости. Соответственно, находим в интернете таблицы с гликемическим индексом продуктов и соответствующе корректируем рацион.
Я когда бросал курить понял для себя такую вещь: за месяц реально бросить курить (судя по разным людям в жизни и в интернете), в течении этого времени мне захочется 20 раз в день курить, я должен быть готов 20 раз в день перебороть это желание. Зафиксировал это в голове - бросил курить.
С питанием также. Я знаю, что мне захочется 5 раз в день поесть. Завтрак ~7.30, обед ~13.00 и ужин ~20.00 - это понятно. По своему опыту знаю, что где-то в 10.00...11.00 и 16.00...17.00 я захочу чего-нибудь сожрать. Я могу пойти в торгомат и купить печенек, m&m`s или баунти, а могу заранее приготовить яблоко на второй завтрак и творожный сырок на полдник. И приступ голода будет преодолен практически бесплатно (с точки зрения лишних калорий). А в случае сырка еще и порцию белка получу. Про яблоки же вообще говорят, что у них "отрицательная" калорийность. Это, конечно, не значит, что съев торт и килограмм яблок вы уйдете в ноль. Нет. Я их при прикидках калорий просто не учитываю.
Плюс необходимо сэкономить в калориях на чем только можете. Минус хлеб и сладкое. Жиры содержат очень много калорий, но жиры все равно требуются организму для роста клеток (Если не ошибаюсь, клеточные стенки состоят из жировых молекул). Стараюсь минимизировать потребление жиров. Минус майонез. Минимум жареного. Минус сливочное масло. Минус сметана. Плюс немного оливкого масла. Большой плюс: жирная рыба. То количество калорий, которое дает рыбий жир, можно учесть и перетерпеть, учитываю пользу омега-3 ненасыщенных жирных кислот.
Дальше. Важна стабильность рациона. Можно конечно считать калории съеденного. Взвешивать тарелки. Есть с калькулятором. Но это муторно как-то. Есть другой вариант. Если ваше меню более менее стабильно и вы видите, что результата нет, то можно скорректировать меню: убрать какие-то еще "вредные" продукты или уменьшить порции. Хаотическое меню скорректировать не получится.
Еще заметил важность витаминных комплексов. Есть мнение и я его разделяю, что в современном мире мы не дополучаем нужно количество витаминов. А они для здоровья по любому необходимы. Особенно при занятиях в тренажорном зале. Самый обычный дешевый компливит 365шт упаковка на год - это меньше полутора рублей в день. По себе заметил, что когда принимаю витамины, лучше высыпаюсь. Без витаминов - очень рано в сон срубает.
P.S.: классный журнал Men`s Health Давно его читаю. Не только сайт. Бумажный тоже. Хотя на сайте, но чуть позднее, основные статьи появляются. Про питание, про здоровье, про физкультуру.
если подключения делать при выключенном компьютере и не касаться руками контактов, то погореть не должно....если очень страшно...можно резистор вместо проводка (~100 Ом)....
хотя если паяльник в руках не появлялся, то результат не гарантирован.....особенно с таким ником =)
Кстати, да. У Валентина из комментария к вопросу по ходу та же идея, но более общая.
Если переопределить равно как "отличается не более чем на восемь", то тоже все верно будет.
А еще можно числа переопределить. Например, "3" будет означать "что-то около трёх.....может 2, может 2,5, может 4"
остальные числа соответственно.
Это да. Потому в данном случае RS-485 и хорош. Но гальваническую изоляцию линии от потребителя сделать все же стоит. Помимо линий А и B прокинуть еще и нулевой провод. Экранировать. Между экраном и нулем резистор. В одной какой-нибудь точке линии точку привязать к нулю питания неизолированной части через резистор. Резисторами организовать правильное начальное смещение для линий A и В. В общем, сделать все как положено. Тогда гарантированно будет все работать. =)
Низковольтное питание можно проложить параллельно.
Где-то будет располагаться вторичный источник питания (ВИП) 220В(~)->5В(=) (например). Или можно на каждую комнату по ВИПу. В общем, как удобнее в каждом конкретном случае.
А вот I2C, насколько я понимаю, это не вариант. I2C применяется для межмодульного соединения, но никак не на длинную линию. Для взаимодействия удаленных устройств по проводам через шину попробуйте посмотреть в сторону RS-485. Для целей включения/выключения розеток/лампочек, снятия данных с электросчетчиков/градусников/гигрометров, опроса других каких-нибудь датчиков - должно хватить скорости.
Есть другой набор аппаратуры, который требует других скоростей. интернет, IPTV, DLNA, видеонаблюдение. Это все по ethernet`у. Про прокладку его тоже стоит отдельно подумать.
Еще момент: длинные провода по сути антенны, а мы живем в мире полном электромагнитных волн, что попало наводится на длинных проводах. В первую очередь 50 Гц, затем разные импульсы от включения/выключения мощной техники, ну и всякое шебуршение от всего остального, радио, тв, телефоны, другая цифровая и не очень техника. Поэтому будьте готовы к тому, что на сигнальных и питающих проводах будет не только то, что вы туда выдали, но все вот это. А это значит нужно будет нести затраты на фильтрацию. Кроме того, нули в разных точках могут на десятки вольт отличаться. Поэтому в особо плохих случаях необходима гальваническая изоляция взаимодействующих по длинной линии абонентов.
Конечно, есть куча практиков, которые уже в пределах квартиры состряпали свои сети по минимальному варианту и у них все работает. Считаю, что повезло. В других условиях может не заработать, а может - заработать.
наиболее близкий к практике вариант:
1. записать состояние каждого атома организма
2. разобрать организм тут
3. передать информацию туда
4. там по информации собрать организм заново в том состоянии, в котором он был на момент записи
пункт 2. по формальным признакам убийство
Такая схема (плюс/минус) лежит в плоскости инженерии. Уже ведутся работы по 3д-печати органов. Сомнительное место в этой схеме считывание/печать мозга. Есть теории в которых состояние мозга, сознание определяется квантовыми эффектами. Но, возможно, удастся как раз телепортировать квантовое состояние мозга в целом. Квантовая телепортация состояний единичный квантовых объектов реализуется уже сейчас.
Конечно, можно в нашем отвлеченном разговоре пофантазировать о всяких пространственно-временных проколах, подпространстве, кротовых норах. Но, по моему мнению, эти идеи также далеки от реальности, как Хогвартс.
Хорошо б, конечно, поподробнее...