2016-07-15 208 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