Иванов Андрей Так эта магия и сейчас должна работать =)
Только с нюансом -- надо определять оператор преобразования типа. Но этот нюанс и в вашем случае надо реализовывать. По мне экстеншен был бы здесь в самый раз, классы нужны для инкапсуляции состояния в основном.
Я сделал фабрику, без экстеншенов и конвертации. Можно, конечно, делать что-то вида myRih.GetVolitility() но есть два минуса:
1. Отсутствие поддержки со стороны байдинга.
2. Код не очень красивый.
Иванов Андрей
Кстати, использование "base." разумно только в виртуальном методе для вызова самого себя вверх по цепочке наследования. Полагаю, что в вашем коде это последствия любви к "this.", но разница между ними в том, что использование "base." где попало приведёт рано или поздно к необъяснимым логическим ошибкам.
Да, я люблю this чтобы отличать статический член от инстанцового. И base использую, чтобы видеть, какой член чему принадлежит. По сути, пользы мало, но это как вредная привычка, от которой не хочется отказываться.[smile]
Иванов Андрей И совсем не в тему =) В прошлом году в MSDN Magazine Тэд Ньюард начал писать серию статей "Мультипарадигматическая .NET". Советую обратить на неё внимание, там очень хорошо описываются базовые принципы построения ПО, которые не знает подавляющее большинство разработчиков. Вот, например, вторая статья:
http://msdn.microsoft.co...u/magazine/gg232770.aspx Еще в 2007 [thumbup] я сделал подобное в Ecng.ComponentModel. Там присутствуют классы Point<T> Size<T> Rectangle<T>. И Operator<T> для реализации алгебры... Уже 4 года прошло. А использовал последний раз эти классы как раз в 2007.[lol]