如何在C ++ / CLI中重载扩展方法

时间:2018-07-01 08:53:57

标签: c# c++-cli

我创建了包含以下代码的小型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#代码中实现两个具有相同名称的扩展方法没有问题。

0 个答案:

没有答案