扩展方法,原因:以下方法或属性之间的调用不明确

时间:2016-06-25 13:22:09

标签: c#

我有这个非常简单的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsFormsApplication3
{
    public interface IInterface1
    {
    }

    public static class Extension1
    {
        public static void DoSomething<TSource>(this TSource obj)
            where TSource : IInterface1
        {
        }
    }

    public class Class1 : IInterface1
    {
    }

    public interface IInterface2
    {
    }

    public static class Extension2
    {
        public static void DoSomething<TSource>(this TSource obj)
            where TSource : IInterface2
        {
        }
    }

    class MainProgram
    {
        void DoStuff()
        {
            var instance1 = new Class1();
            instance1.DoSomething();
        }
    }
}

奇怪的是这一行:

instance1.DoSomething();

给出了这个错误:

  

以下方法或属性之间的调用不明确:'Extension1.DoSomething(TSource)'和'Extension2.DoSomething(TSource)'

instance1是实现Interface1但不实现Interface2的类的实例,Extension1中的扩展方法是为实现Interface1的对象定义的。 Extension2中的扩展方法是为实现Interface2的对象定义的。因此,似乎不存在任何歧义问题。

为什么电话会变得暧昧?

0 个答案:

没有答案