具有泛型类型和继承的复杂模型

时间:2016-07-15 07:27:18

标签: c# oop generics

我有这个数据模型。(我不确定它是否是最好的方法) enter image description here

蓝色块是抽象类。 绿色块是普通类。

我遇到的问题是:

我想在Sub_BaseClass变量中保存C,D或E对象,但编译器告诉我需要指定泛型类的类型。

Sub_BaseClass<?> variable;

variable = (Sub_BaseClass<?>)objct;

我知道“objct”类型将是C,D或E类。 我尝试在Sub_BaseClass泛型之前向该模型添加一个没有泛型类型的Sub_BaseClass,但我需要指定BaseClass的类型,然后我在C,D和E中丢失泛型类型。

我该如何解决这个问题? 我想/需要做类似的事情:

Sub_BaseClass variable;

variable = (Sub_BaseClass)objct;

这可能吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果你真的想在Sub_BaseClass变量中保存C,D和E,你必须使用泛型参数,因为Sub_BaseClass是泛型类。

这也意味着使用Sub_BaseClass变量的所有代码都需要是通用代码。例如:

public class BaseClass
{
}

public class Sub_BaseClass<T> : BaseClass
{
}

...

public void DoSomething<T>(BaseClass objct)
{
  Sub_BaseClass<T> variable;

  variable = objct as Sub_BaseClass<T>;

  ...
}

我希望这会有所帮助。