1

次のコードがあります。コーディング中に型を指定せずに実行時にインスタンスを作成する方法を教えてください。

MyObject productobject = something.

タイプのオブジェクトが必要です

 AccessValuesFrom<long,double>,AccessValuesFrom<long,string>..etc

通常、私は以下のオブジェクトを作成できます:

 AccessValuesFrom<long,double> accessData=productobject.ElementInfo.GetAccessValues<double>(something, something);

しかし、実行時に AccessValuesFrom が必要です。long は事前に定義されています。インスタンスを作成する直接的な方法がない場合に、そのようなタイプのインスタンスを作成する方法 (私の状況では、私は呼び出す必要があります

  productobject.ElementInfo.GetAccessValues<double>(something, something)

インスタンスを作成します。

4

1 に答える 1

3

Typeこの時点でオブジェクトがある場合は、次のGetAccessValuesように実装できます。

object GetAccessValues(Type type, something, something)
{
     var result = Activator.CreateInstance(
           typeof(AccessValuesFrom<,>).MakeGenericType(typeof(long), type));
     //do something with something
     return result;
}

また、一般的なメソッドを含むすべてのジェネリックのインターフェイスを作成することもお勧めしますAccessValuesFrom

于 2013-06-14T04:52:39.323 に答える