C# 4.0 .NET 4.5 Silverlight 5 我找不到解决方案似乎很奇怪,所以需要一些帮助。
我有基类 Base 和派生类 Child : Base。我还有一个辅助类,它具有通用类型来执行特定工作的一个 EF 实体 Helper,其中 T:EntityObject。
Child 对特定实体 MyEntity 进行特定工作:EntityObject。
所以我尝试了:
public class Base
{
protected Helper<EntityObject> helper;
}
public class Child : Base
{
public Child()
{
helper = new Helper<MyEntity>();
}
}
我希望更多的派生类必须知道更具体的泛型参数,我认为这就是协方差......但这不起作用......
像这样设计课程的“正确”方法是什么?
编辑:对不起,我没有说 100% 清楚为什么我不能达到我所需要的。
一个。使用通用 Base 的解决方案不起作用,因为 Base 的用户不知道 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一无所知的界面中提出它