0
我正在嘗試使用反射來動態調用一個函數並且不太確定如何使它工作。使用反射來動態地調用一個函數會給出錯誤:非靜態方法需要一個目標
這是我的主要功能:
public partial class WorkerRole : RoleEntryPoint
{
public override void Run()
{
while (true)
{
List<string> Firms = new List<string>();
Firms.Add("BHP");
foreach (string Firm in Firms)
{
typeof(WorkerRole).GetMethod(string.Format("{0}GetProfiles", Firm), BindingFlags.Instance | BindingFlags.Public).Invoke(null, null);
}
break;
}
Thread.Sleep(Timeout.Infinite);
}
}
這裏是我動態調用(它們都具有相同的簽名)的功能中的一個例子:
public partial class WorkerRole : RoleEntryPoint
{
public List<string> BHPGetProfiles()
{
// Do tasks specific to BHP
}
}
的錯誤,我進入以typeof開頭的行是:
附加信息:非靜態方法需要一個目標。
我不希望我的GetProfiles方法是靜態的,但我認爲添加BindingFlags.Instance應該解決了這個問題?
感謝您的幫助!
好吧,這是有道理的 - 我的回報列表最終?我如何將它分配給一個變量? –
Evonet
@Evonet它由Invoke方法作爲'object'返回,所以你必須將它轉換爲你的'List'。 –
Dirk