有沒有辦法將參數綁定到委託來創建一個新的零參數委託?.NET C++:如何將參數綁定到委託以創建新的零參數委託?
喜歡的東西:
delegate void FnDelegate(int id, String^ name);
void Fn(int id, String^ name);
Delegate^ del = <some-function-name>(gcnew FnDelegate(&Fn), 1, "Name");
我注意到,表::調用可能使用了一些類似的機制,所以必須有一些這方面的設施:
delegate void FnDelegate(int id, String^ name);
Invoke(gcnew FnDelegate(&Fn), 1, "Name");
現在,我要做的(對於每個功能!):
void Fn(int id, String^ name);
ref class FnWrapper
{
public:
int id;
String^ name;
void Execute()
{
Fn(id, name);
}
};
delegate void VoidDelegate();
Delegate^ CreateFnDelegate(int id, String^ name)
{
FnWrapper^ Wrapper = gcnew FnWrapper;
Wrapper->id = id;
Wrapper->name = name;
return gcnew VoidDelegate(Wrapper, &FnWrapper::Execute);
}
必須有一個mo重新做這個優雅的方式。
「Form :: Invoke只是簡單地將所有參數放在一個數組
@ user3215177:我添加了一段代碼,但未編譯或測試。讓我知道它是如何工作的。 – 2014-10-16 20:55:30
謝謝!正是我在找什麼。完美的作品。 KISS的原則 - 好,乾淨,通用。沒有複製和粘貼,但根據您的代碼編寫了我需要的代碼。 – Brian 2014-10-16 23:25:03