假设我们有两个不相关的接口
public interface IFirst
{
}
public interface ISecond
{
}
Run Code Online (Sandbox Code Playgroud)
和扩展方法具有相同的名称但受限于每个接口.
public static class IFirstExtensions
{
public static void DoIt<TFirst>(this TFirst model)
where TFirst : IFirst
{
}
}
public static class ISecondExtensions
{
public static void DoIt<TSecond>(this TSecond model)
where TSecond : ISecond
{
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用IFirst实例时:
IFirst first = ...;
first.DoIt();
Run Code Online (Sandbox Code Playgroud)
然后我得到错误:
"CS0121以下方法或属性之间的调用不明确:'IFirstExtensions.DoIt(TFirst)'和'ISecondExtensions.DoIt(TSecond)'".
这很奇怪.看起来这两种方法在此范围内都可见.但如果我给它们命名不同,例如:
public static class IFirstExtensions
{
public static void DoFirst<TFirst>(this TFirst model)
where TFirst : IFirst
{
}
}
public static class ISecondExtensions
{ …Run Code Online (Sandbox Code Playgroud)