如何通过C++/CLI创建.NET扩展方法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (61)

在C#中,扩展方法可以由

public static class MyExtensions {
    public static ReturnType MyExt(this ExtType ext) {
        ...
    }
}

由于我所有的库都是用C++/CLI编写的,所以我也想在C++/CLI中创建.net扩展方法

static public ref class MyExtensions {
public:
    static ReturnType^ MyExt(this ExtType ^ext) {
        ...
    }
};

但是编译器不能识别第一个参数中的关键字‘this’。

error C2059: syntax error: 'this'
提问于
用户回答回答于

只需将方法和包含的类装饰为扩展属性:

using namespace System::Runtime::CompilerServices;
...

[ExtensionAttribute]
public ref class MyExtensions abstract sealed {
    public:        
        [ExtensionAttribute]
        static ReturnType MyExt(ExtType ^ext) {
            ...
        }
};

扫码关注云+社区

领取腾讯云代金券