C# 实例化具有反射和动态参数计数的对象

C# 实例化具有反射和动态参数计数的对象,c#,reflection,C#,Reflection,我有课。通过反射,我得到了它的构造函数和参数计数/类型。 我也有任何类型的生成器。 所以我需要做点什么 var constructor; var params = constructor.GetParameters(); object[] args; foreach( var param in params ) { var type = param.Parametertype; args[] += (object)Build<type>(); } Activator

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

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);
var构造函数;
var params=constructor.GetParameters();
对象[]args;
foreach(参数中的变量参数){
变量类型=参数参数类型;
args[]+=(对象)Build();
}
CreateInstance(类型,参数);

问题是,我无法将参数类型作为泛型参数传递。

否,您还需要使用反射来调用泛型方法:

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); 
}
var构造函数=。。。;
var parameters=constructor.GetParameters();
object[]args=新对象[parameters.Length];
//针对私有方法等进行调整
var buildMethod=typeof(ClassContainingBuild).GetMethod(“Build”);
for(int i=0;i
否,您还需要使用反射来调用泛型方法:

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); 
}
var构造函数=。。。;
var parameters=constructor.GetParameters();
object[]args=新对象[parameters.Length];
//针对私有方法等进行调整
var buildMethod=typeof(ClassContainingBuild).GetMethod(“Build”);
for(int i=0;i