【问题标题】:Instantiate object with reflection and dynamic arguments count使用反射和动态参数计数实例化对象
【发布时间】:2013-03-07 21:54:01
【问题描述】:

我有课。通过反射,我得到了它的构造函数和参数计数/类型。 我也有任何类型的生成器。 所以我需要做

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

问题是,我不能将参数的类型作为泛型参数传递。

【问题讨论】:

    标签: c# reflection


    【解决方案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); 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多