[英]Using Reflection to get static method with its parameters
我正在使用公共靜態類和靜態方法及其參數:
public static class WLR3Logon
{
static void getLogon(int accountTypeID)
{}
}
現在我嘗試將其參數的方法提取到另一個類並使用以下代碼:
MethodInfo inf = typeof(WLR3Logon).GetMethod("getLogon",
BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy);
int[] parameters = { accountTypeId };
foreach (int parameter in parameters)
{
inf.Invoke("getLogon", parameters);
}
但它給了我錯誤
“你調用的對象是空的。”
我哪里出錯了。
使用以下方法解決了此問題:
using System.Reflection;
string methodName = "getLogon";
Type type = typeof(WLR3Logon);
MethodInfo info = type.GetMethod(
methodName,
BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy);
object value = info.Invoke(null, new object[] { accountTypeId } );
這里有很多問題
您的方法是私有的,因為您沒有顯式聲明訪問修飾符。 您有兩種方法可以使代碼按預期工作:
public
。 GetMethod
調用中指定BindingFlags.NonPublic
讓你的方法public
。 它應該在那之后工作
public static class WLR3Logon
{
public static void getLogon(int accountTypeID)
{}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.