声明委托类型以匹配方法签名

时间:2018-05-19 16:43:11

标签: c# c++-cli

有没有办法声明与给定函数匹配的委托类型?也就是说,我不想复制和粘贴参数,并且必须记住在任何时候更改代理更改函数签名。理想情况下,这样的事情:

class Foo
{
    void APIFunction();
}

delegate APIDel = Foo.APIFunction;

允许我这样做:

function IntPtr GetAPIFunctionPointer ()
{
    var foo = new Foo();

    APIDel del = foo.APIFunction
    IntPtr ptr = Marshal::GetFunctionPointerForDelegate(del);
    return del;
}

对于上下文,我有一个基于插件的应用程序,它支持托管和非托管插件。插件API使用一组C函数指针声明。有一个托管接口,其中包含镜像C API的方法。对于托管插件,我实现了接口,创建了接口方法的委托,并将这些委托编组为本机端可以调用的函数指针。我正在尝试消除手动委托声明,因为这使得我必须手动更新函数参数3个位置。

0 个答案:

没有答案