Generics and casting

class B : A {}
class Sub<T> where T:A
{
//...
}

Я хочу сохранить экземпляры Sub в коллекции.

var c = new List<Sub<A>>();
c.Add(new Sub<B>()); //doesn't work

Однако, чтобы заставить его работать, я должен объявить интерфейс и сохранить экземпляры этого интерфейса.

interface IBase
{
    void DoStuff(A a);
}

var c = new List<IBase>();
c.Add(new Sub<B>()); //works

Есть ли более элегантный способ сделать это?

10
задан jameszhao00 8 June 2011 в 17:04
поделиться