2016-07-15 210 views
2

复杂的模型,我得到这个数据模型。(我不知道这是否是最好的办法) enter image description here与泛型类型和继承

蓝块是抽象类。 绿色块是正常类。

我的问题是:

我要救C,d或E对象在Sub_BaseClass变量,但编译器告诉我,我需要指定泛型类的类型。

Sub_BaseClass<?> variable; 

variable = (Sub_BaseClass<?>)objct; 

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

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

Sub_BaseClass variable; 

variable = (Sub_BaseClass)objct; 

这可能吗?

谢谢!

回答

1

如果你真的想把C,D和E保存在Sub_BaseClass变量中,你必须使用泛型参数,因为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>; 

    ... 
} 

我希望这有助于。

+0

但在DoSomething方法我不知道具体的类型。我只知道目标是C,D或E,但不是其中的一个。 :/ – Maik

+0

...然后只需使用'BaseClass'而不是'Sub_BaseClass <>''''? – ViRuSTriNiTy