将Class <derived>添加到List <class <interface>&gt;

时间:2018-06-12 17:42:37

标签: c# generics inheritance collections

这是设置。

public interface IBaseClass
{
}

public class DerivedClass1 : IBaseClass
{
}

public class DerivedClass2 : IBaseClass
{
}

public class WrapperClass<T> where T : IBaseClass
{
   public T DClassItem {get;set;}
}

public List<WrapperClass<IBaseClass>> GetClasses()
{
   List<WrapperClass<IBaseClass>> stuff = new List<WrapperClass<IBaseClass>>();
   DerivedClass1 d1 = new DerivedClass1();
   DerivedClass2 d2 = new DerivedClass2();
   stuff.Add(GetWrapper(d1));
   stuff.Add(GetWrapper(d2));
}

public GetWrapper<T>(T input) where T : IBaseClass
{
   return new WrapperClass(){
     DClassItem = input
   };
}

在GetClasses结束时,我希望有一个包含WrapperClass<DerivedClass1>WrapperClass<DerivedClass2>的列表。但是,当我尝试添加GetWrapper调用的结果时,会抛出一条错误消息,指出它无法从WrapperClass<DerivedClass1>转换为WrapperClass<IBaseClass>。有没有办法通过混合不同的DerivedClass类型获得WrapperClass的所有实例的某种集合?

0 个答案:

没有答案