簡體   English   中英

使用反射和動態參數計數實例化對象

[英]Instantiate object with reflection and dynamic arguments count

我上課。 通過反思,我得到它的構造函數和參數計數/類型。 我也有任何類型的建設者。 所以我需要做

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM