这是一个非常简单的例子。

public interface IMyInterfaceProperty
{
}

public class MyProperty : IMyInterfaceProperty
{
}

public interface IMyInterface
{
    IMyInterfaceProperty SomeProperty { get; set; }
}

public class MyClass : IMyInterface
{
    public MyProperty SomeProperty { get; set; }
}


在此示例中,MyProperty是从IMyInterfaceProperty派生的,但不允许使用。不允许编译的思想过程是什么?

Program.MyClass不实现接口成员Program.IMyInterface.SomePropertyProgram.MyClass.SomeProperty无法实现Program.IMyInterface.SomeProperty,因为它没有匹配的返回类型Program.IMyInterfaceProperty

最佳答案

甚至不允许以下情况:

public interface IMyInterface
{
    IMyInterfaceProperty SomeProperty { get; set; }
    MyProperty SomeProperty { get; set; }
}


我认为原因是类型中不允许具有相同签名的成员。此处不考虑返回值:


  方法的签名明确不包含返回值
  类型,也不包含可能指定的params修饰符
  最右边的参数。


(摘自http://msdn.microsoft.com/en-us/library/aa691131(v=vs.71).aspx。尽管它是针对VS2003的,但我认为自那时以来就没有改变了:))

10-08 16:22