Недавно мне понадобилось проверить результат компиляции (есть ли ошибки-предупреждения и какие) простого и небольшого фрагмента C# кода будующим компилятором - Microsoft® “Roslyn”.
C# Snippets
Кусочки кода
пятница, 25 января 2013 г.
воскресенье, 20 января 2013 г.
Атрибуты: откуда их брать
Очередной пост из серии "Что такое хорошо и что такое плохо?". В этот раз о том, как правильно извлекать .NET-атрибуты из метаданных. К сожалению, многие для этой задачи используют интерфейс ICustomAttributeProvider, точнее его реализации в классе Assembly и наследниках класса MemberInfo: Type, PropertyInfo и других.
| Reactions: |
четверг, 20 декабря 2012 г.
Типизированное клонирование
Сегодня хочется рассказать о том, как описать в иерархии типов возможность (интерфейс) клонирования объектов. Подразумевается, что программист уже знает, каким именно образом будет реализован код клонирования (тут вариантов много и выбор конкретного зависит от очень большого числа требований и возможностей) и речь пойдёт о том, как бы с максимальным удобством для пользователя кода всё оформить.
| Reactions: |
вторник, 30 октября 2012 г.
Коллекция как тип свойства
Рано или поздно, но почти перед каждым программистом встаёт задача объявить свойство, тип которого будет представлять собой коллекцию каких-либо объектов. И тут важно не оплошать, что бы свойство было бы удобно использовать и при этом оно не позволило бы случайно "выстрелить себе в ногу".
К необходимости внести ясность в обсуждаемую тему сподвигло очень уж не редко встречающаяся на просторах интернета такая вот реализация свойства:
или
| Reactions: |
вторник, 23 октября 2012 г.
NVI и C#
NVI - Non-Virtual Interface, одна из идиом программирования, предписывающая, что открытый интерфейс класса не должен быть виртуальным. Подробнее о ней вы можете прочитать в wikibooks и далее в References оттуда. Здесь я расскажу, почему в C# данный подход к проектированию типов имеет не меньшее значение, чем в С++ (почему-то не редко сталкивался с мнением, что это чисто С++-нутая заморочка), а так же о некоторых аспектах применения этого подхода, не описанных (явно) в популярной литературе.
| Reactions: |