0

インターフェイスを実装するクラスのインスタンスが渡された場合、必ずしも正確なタイプがわからない場合があります。このクラスの配列を作成したい場合(それが何であれ)、次のように行うことができます:

IWhatever[] ArrayOfClass = (IWhatever[])Array.CreateInstance(InstanceOfClass.GetType(), length);

InstanceOfClassがIWhateverを実装するクラスのインスタンスである限り、これは機能します。

問題は、配列のメンバーを初期化する方法がわからないように見えることです。うまくいくかもしれないと思いnew IWhatever()ましたが、うまくいきません。

配列のメンバーを作成するにはどうすればよいですか?

4

2 に答える 2

2

各メンバーを、インターフェイスを実装するクラスのインスタンスに初期化する必要があります。

と同じ型がInstanceOfClass必要で、その型にデフォルトのコンストラクターがある場合は、次のようなものを使用できます。

for(int i=0;i<ArrayOfClass.Length;++i)
{
    ArrayOfClass[i] = (IWhatever)Activator.CreateInstance(InstanceOfClass.GetType());
}
于 2012-10-01T20:59:12.300 に答える
0

インターフェイスにファクトリメソッドを追加します。ファクトリメソッドは、ジェネリック型に基づいて配列として割り当てる正しい特定の型のインスタンスを作成します。

于 2012-10-01T21:03:16.987 に答える