Подтвердить что ты не робот

Как я могу создавать методы расширения .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?

4b9b3361

Ответ 1

Вам просто нужно украсить метод и содержащий класс ExtensionAttribute:

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

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