2013-03-07 101 views
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); 

的問題,我不能傳遞參數的類型,一般的參數。

回答

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