两个具有相同名称的通用方法

时间:2012-07-16 08:26:51

标签: c# generics

不可能(除了使用不同的名称)有几个具有相同名称但实现不同界面的通用方法?

public IList<T> List<T>() where T : class, IMyInterface1
{

    return mylist
}

public IList<T> List<T>() where T : class, IMyInterface2
{

    return mylist
}

谢谢,

1 个答案:

答案 0 :(得分:11)

不,你不能仅仅通过泛型类型的重载来重载。您可以通过类型参数的数字重载,但不能超出它们的约束。

如果你实现接口,你可以使用显式接口实现 - 否则我建议只使用不同的名称。老实说,我经常发现,使用不同的名称会使事情更加清晰。

请记住,您提供的示例无论如何都会引入自然的歧义 - 如果类型参数实现两个接口,您希望调用什么?