我创建了包含以下代码的小型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;
}
};
此代码具有两个名称相同的方法,并且编译过程进展顺利。
但是当我想在C#代码中使用dll时出现问题:
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是模棱两可的。 但是使用单词“ this”直接在c#代码中实现两个具有相同名称的扩展方法没有问题。