Как я могу создать методы расширения .Net с помощью C ++ / CLI? - PullRequest
21 голосов
/ 16 мая 2011

В C # методы расширения могут быть созданы с помощью

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

Поскольку вся моя библиотека написана на C ++ / CLI, я хотел бы создать методы расширения .net также на C ++ / CLI (чтобы иметь одну DLL вместо двух). Я пробовал следующий код

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

Но компилятор не может распознать ключевое слово «this» в первом аргументе.

error C2059: syntax error: 'this'

Есть ли способ создать метод расширения в C ++ / CLI?

1 Ответ

40 голосов
/ 16 мая 2011

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

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

[ExtensionAttribute]
public ref class MyExtensions abstract sealed {
    public:        
        [ExtensionAttribute]
        static ReturnType MyExt(ExtType ^ext) {
            ...
        }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...