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

时间:2011-05-16 01:56:50

标签: .net c++-cli extension-methods

在C#中,可以通过

创建扩展方法
public static class MyExtensions {
    public static ReturnType MyExt(this ExtType ext) {
        ...
    }
}

由于我的所有库都是用C ++ / CLI编写的,我想在C ++ / CLI中创建.net扩展方法(为了拥有一个DLL而不是两个)。我试过以下代码

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

但编译器无法在第一个参数中识别关键字'this'。

error C2059: syntax error: 'this'

有没有办法在C ++ / CLI中创建扩展方法?

1 个答案:

答案 0 :(得分:40)

您只需使用ExtensionAttribute装饰方法和包含类:

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

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