C#4.0 .NET 4.5 Silverlight 5 看起来很奇怪,我不能找到解决方案,所以需要一些帮助。C#泛型类中的协变性
我有基类Base和派生类Child:Base。我也有助手类具有泛型类型来做具体的工作一个EF实体助手,其中T:EntityObject。
子对特定的实体MyEntity:EntityObject做特定的工作。
所以,我想:
public class Base
{
protected Helper<EntityObject> helper;
}
public class Child : Base
{
public Child()
{
helper = new Helper<MyEntity>();
}
}
我希望有更多的派生类必须了解更具体的泛型参数,我认为这就是协方差......但是,这并不工作...
设计这样的课程的“正确”方式是什么?
编辑:对不起,我没能100%清楚为什么不能我实现我需要什么。
a。通用基地的解决方案不起作用,因为基地的用户不知道T型。试想一下:
public class User
{
private Base<T> base; // this will not compile.
public User(TypeEnum t)
{
if(t == TypeEnum.MyEntity) base = new Child();
...
湾带接口的解决方案不起作用,因为帮助器在任何地方都使用T(它的目的是否正确?)。想象一下,它有方法
public IEnumerable<T> Process(IEnumerable<T> items) { return items; }
我如何把它的界面,不知道大约T t
你看到了什么错误? “不起作用”是什么意思? – 2013-05-01 11:50:28
'助手“是什么样的? 'MyEntity'和'EntityObject'之间的关系是什么? – 2013-05-01 11:52:28
帮手类是这里最重要的部分 – NSGaga 2013-05-01 11:54:53