这是一个非常简单的例子。
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.SomeProperty
。 Program.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的,但我认为自那时以来就没有改变了:))