1

クラスがあります。そして、振り返ってみると、コンストラクターとパラメーターの数/タイプを取得します。また、私はあらゆるタイプのビルダーを持っています。だから私は作る必要があります

var constructor;
var params = constructor.GetParameters();
object[] args;
foreach( var param in params ) {
    var type = param.Parametertype;
    args[] += (object)Build<type>();
}

Activator.CreateInstance(Type, args);

問題は、パラメーターのタイプをジェネリック引数として渡すことができないことです。

4

1 に答える 1

1

いいえ、リフレクションを使用してジェネリック メソッドも呼び出す必要があります。

var constructor = ...;
var parameters = constructor.GetParameters();
object[] args = new object[parameters.Length];
// Adjust this for private methods etc
var buildMethod = typeof(ClassContainingBuild).GetMethod("Build");
for (int i = 0; i < args.Length; i++)
{
    var genericBuild = buildMethod.MakeGenericMethod(parameters[i].ParameterType);
    // Adjust appropropriately for target etc
    args[i] = genericBuild.Invoke(this, null); 
}
于 2013-03-07T13:54:01.797 に答える