在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中创建扩展方法?
答案 0 :(得分:40)
您只需使用ExtensionAttribute装饰方法和包含类:
using namespace System::Runtime::CompilerServices;
...
[ExtensionAttribute]
public ref class MyExtensions abstract sealed {
public:
[ExtensionAttribute]
static ReturnType MyExt(ExtType ^ext) {
...
}
};