C# 4.0 .NET 4.5 Silverlight 5 我发现很奇怪,找不到解决方案,所以需要帮助。
我有一个基类Base和派生类Child : Base。我还有一个帮助类,它具有用于特定工作的泛型类型,其中T:EntityObject是EF实体Helper。
Child使用特定实体MyEntity : EntityObject进行特定工作。
所以我尝试:
public class Base
{
protected Helper<EntityObject> helper;
}
public class Child : Base
{
public Child()
{
helper = new Helper<MyEntity>();
}
}
我认为更具体的泛型参数应该由更多派生类知道,这就是协变所用之处...但是这样做并不起作用...
那么设计这种类的“正确”方式是什么?
编辑:抱歉,我没有完全说明为什么我不能达到我需要的目标。
a. 有关基本泛型的解决方案 无法正常工作,因为基类的用户不知道 T 类型。 想象一下:
public class User
{
private Base<T> base; // this will not compile.
public User(TypeEnum t)
{
if(t == TypeEnum.MyEntity) base = new Child();
...
解决方案中的接口不起作用,因为helper在所有地方都使用T(这是它的目的对吧?)。想象一下它有一个方法。public IEnumerable<T> Process(IEnumerable<T> items) { return items; }
我该如何在不知道T的界面中呈现它?
Helper
是什么样子的?MyEntity
和EntityObject
之间有什么关系? - Matthew Watson