Ответы пользователя по тегу C
  • C#. Возможно ли создать список объектов заранее неизвестного типа?

    @Hanhe
    Это возможно, если использовать ковариантность.
    Но с ограничениями:
    Во-первых, это возможно только в VS2010, компилятор 2008ой этого не поддерживает. Требования к фреймворку уточните на msdn, на сколько я помню 3.5 sp1 поддерживается, хотя я могу и ошибаться, и для ковариантности требуется .net 4.
    Во-вторых, невозможно будет параметризовать класс типами-значениями(например int'ом).
    Плюс ковариантность налагает некоторые другие ограничения, о которых вы можете прочитать по ссылке на msdn выше.

    Пример кода:

    Copy Source | Copy HTML
    1. public interface IValue<out T>
    2. {
    3.     T Get();
    4. }
    5.  
    6. public class Value<T>:IValue<T>
    7. {
    8.     public T Get()
    9.     {
    10.         return default(T);
    11.     }
    12. }
    13.  
    14. public class Values: List<IValue<object>>
    15. {
    16.  
    17. }


    Пример использования:

    Copy Source | Copy HTML
    1. var v = new Values();
    2. v.Add(new Value<string>());
    3. v.Add(new Value<object>());
    4.  
    5. //а вот так нельзя: v.Add(new Value<int>());
    6.  
    Ответ написан
    3 комментария