C#不明确的调用 - 不同的返回类型

Pic*_*els 2 .net c# extension-methods ambiguous mongodb

我有2个扩展方法将MongoDB文档转换为实体/对象.

public static ProductTemplate Convert(this Document document)
{
    return null;
}

public static Product Convert(this Document document)
{
    return null;
}
Run Code Online (Sandbox Code Playgroud)

这给出了一个预期的模糊调用错误,所以我想知道如何解决这个问题?

友好的问候,

Pickels

Tom*_*han 9

你可以使你的Convert方法通用:

public static T ConvertTo<T>(this Document doc) where T : SomeBaseClassOrInterface
{
    return null;
}
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

var document = new Document();
var temp = document.ConvertTo<ProductTemplate>(); // returns a ProductTemplate
var prod = document.ConvertTo<Product>(); // returns a Product
Run Code Online (Sandbox Code Playgroud)


Dav*_*kle 7

函数不能通过返回类型重载.您必须将您的功能重命名为:

ConvertToProductTemplate()和ConvertToProduct()

或者将它们转换为一个返回公共基类或接口的函数.(但是当调用者得到你的结果时,他们必须做一个演员)