Как перегрузить методы расширения в C ++ / CLI - PullRequest
0 голосов
/ 01 июля 2018

Я создал небольшой c ++ / cli dll, который содержит следующий код:

[ExtensionAttribute]
public ref class PointExtension abstract sealed
{
public:
    [ExtensionAttribute]
    static int **ToMyInt**(System::Windows::Point^ point)
    {
        return 2222;
    }
};

[ExtensionAttribute]
public ref class VectorExtension abstract sealed
{
public:
    [ExtensionAttribute]
    static int **ToMyInt**(System::Windows::Vector^ vector)
    {
        return 2222;
    }
};

В этом коде есть два метода с одинаковым именем, и процесс компиляции идет хорошо.

Но когда я хочу использовать свою dll в коде C #, возникает проблема:

static void Main(string[] args)

{

    Point p1 = new Point(1, 2);
    Vector v1 = new Vector(3, 4);

    int I1 = v1.ToMyInt();
    int I2 = p1.ToMyInt();
}

Здесь компилятор говорит, что ToMyInt неоднозначны. Но нет никакой проблемы реализовать два метода расширения с одним и тем же именем непосредственно в коде c #, используя слово «this».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...