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

Kri*_*s-I 9 c# generics

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

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

    return mylist
}

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

    return mylist
}
Run Code Online (Sandbox Code Playgroud)

谢谢,

Jon*_*eet 11

不,你不能仅仅通过泛型类型的重载来重载.您可以通过类型参数的数量进行重载,但不能根据其约束进行重载.

如果您正在实现一个接口,您可以使用显式接口实现 - 否则我建议使用不同的名称.老实说,我经常发现使用不同的名字会使事情变得更清晰.

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