Как я могу создавать методы расширения .Net с помощью С++/CLI?
В С# методы расширения могут быть созданы с помощью
public static class MyExtensions {
public static ReturnType MyExt(this ExtType ext) {
...
}
}
Поскольку вся моя библиотека написана в С++/CLI, я хотел бы создать методы расширения .net также в С++/CLI (чтобы иметь одну DLL вместо двух). Я пробовал следующий код
static public ref class MyExtensions {
public:
static ReturnType^ MyExt(this ExtType ^ext) {
...
}
};
Но компилятор не может распознать ключевое слово 'this' в первом аргументе.
error C2059: syntax error: 'this'
Есть ли способ создать метод расширения в С++/CLI?
Ответы
Ответ 1
Вам просто нужно украсить метод и содержащий класс ExtensionAttribute:
using namespace System::Runtime::CompilerServices;
...
[ExtensionAttribute]
public ref class MyExtensions abstract sealed {
public:
[ExtensionAttribute]
static ReturnType MyExt(ExtType ^ext) {
...
}
};