有没有办法将参数绑定到委托来创建一个新的零参数委托?.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