Copy Source | Copy HTML
- public interface IValue<out T>
- {
- T Get();
- }
-
- public class Value<T>:IValue<T>
- {
- public T Get()
- {
- return default(T);
- }
- }
-
- public class Values: List<IValue<object>>
- {
-
- }
Copy Source | Copy HTML
- var v = new Values();
- v.Add(new Value<string>());
- v.Add(new Value<object>());
-
- //а вот так нельзя: v.Add(new Value<int>());
-
Copy Source | Copy HTML
-
- using System.Reflection;
-
- // создаем наши формы
- List<object> objects = new List<object>();
- objects.Add( new Form1() );
- objects.Add( new Form1() );
- objects.Add( new Form2() );
- objects.Add( new Form3() );
-
- //отображаем их
- foreach( object obj in objects )
- {
- Type t= obj .GetType();
- Type[] tIncomingParams = {};
-
- MethodInfo methodInfo = type.GetMethod( "Show", tIncomingParams );
- methodInfo.Invoke( obj, null );
- }
-
List<object>и туда пихать всё, что угодно.
List<BaseValue>.
Компактность!Роберт Мартин, «Чистый код» (хоть примеры и приводятся на Java, думаю что книга все равно полезная).
Первое правило: функции должны быть компактными. Второе правило: функции должны быть еще компактнее. Я не могу научно обосновать свое утверждение. Не ждите от меня ссылок на исследования, доказывающие, что очень маленькие функции лучше больших. Я могу всего лишь сказать, что я почти четыре десятилетия писал функции всевозможных размеров. Мне доводилось создавать кошмарных монстров в 3000 строк. Я написал бесчисленное множество функций длиной от 100 до 300 строк. И я писал функции от 20 до 30 строк. Мой практический опыт научил меня (ценой многих проб и ошибок), что функции должны быть очень маленькими. <...> Однако строки не должны состоять из 150 символов, а функции из 100 строк. Желательно, чтобы длина функции не превышала 20 строк.