Я создал небольшой 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».