簡體   English   中英

使用反射調用具有參數的方法

[英]Call a Method which has params using Reflection

我正在嘗試調用具有使用反射的 Params 的方法。 它返回 System.Reflection.TargetParameterCountException

這僅發生在方法參數中具有 params 關鍵字的方法上

Public static dynamic Function(JObject data, string PathFunction) {            

        string MethodName = "MergeFields";
        string FunctionsNamespace ="Test.Functions";

        Object[] parameterArray = {"274-84-3068","5","1","Hugenberg","4","0"}

        // Call Static class functions 
        Type type = Type.GetType(FunctionsNamespace);            
        Object obj = Activator.CreateInstance(type);            
        MethodInfo methodInfo = type.GetMethod(MethodName);            
        object st =  methodInfo.Invoke(obj, parameterArray);
        return st;

    }



     public static string MergeFields(params string[] data)
    {
        StringBuilder sb = new StringBuilder();
       // code to be processed
        return sb.ToString();
    }

如果你有一個方法:

public static string MergeFields(params string[] data)

你打電話給:

MergeFields("a", "b", "c");

編譯器偷偷把它變成:

MergeFields(new string[] { "a", "b", "c" });

但是,當您使用反射時,您不會在此處獲得編譯器的幫助:您需要自己創建該字符串數組:

object[] parameterArray = new object[] { new string[] { "274-84-3068", "5", "1", "Hugenberg", "4", "0" } };

在這里,我們將向MergeFields傳遞一個參數,該參數是一個字符串數組。

暫無
暫無

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

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