2016-07-15 8 views
2

私は、このデータモデルを得た。(私はそれが最善のアプローチであるかどうかわからないです) enter image description here複雑なジェネリック型を持つモデルと継承

ブルーブロックは抽象クラスです。 緑色のブロックは通常のクラスです。

私が持っている問題は、それである:

私はSub_BaseClass変数にC、DまたはEのオブジェクトを保存したいが、コンパイラは私に語った私は、ジェネリッククラスの型を指定する必要があります。

Sub_BaseClass<?> variable; 

variable = (Sub_BaseClass<?>)objct; 

私が知っている「objct」タイプは、私がSub_BaseClassジェネリック前にそのモデルにジェネリック型なしSub_BaseClassを追加するためにしようと試みC、DまたはE. のクラスになりますが、私はBaseClassののタイプを指定する必要があり、 C、D、Eでジェネリックタイプを失う。

どうすれば問題を解決できますか?以下のような何かを行うに 私が欲しい/必要性:

Sub_BaseClass variable; 

variable = (Sub_BaseClass)objct; 

があることは可能ですか?

ありがとうございました!

答えて

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>; 

    ... 
} 

これが役立ちます。

+0

しかし、DoSomethingメソッドでは、特定の型はわかりません。私はobjctがC、D、またはEであることを知っていますが、そのうちの一つではありません。 :/ – Maik

+0

... 'Sub_BaseClass <>' maybe'の代わりに 'BaseClass'を使うだけですか? – ViRuSTriNiTy

関連する問題