这个接口的使用有什么问题?
本文关键字:什么 问题 接口 | 更新日期: 2023-09-27 18:14:28
假设有一个这样的接口:
interface MyInterface
{
public string AProperty { get; set;}
public void AMethod ()
}
这个接口在另一个接口中使用:
interface AnotherInterface
{
public MyInterface member1 { get; set; }
public int YetAnotherProperty {get; set;}
}
现在假设有两个类,一个实现每个接口。
class MyInterfaceImpl : MyInterface
{
private string aproperty
public string AProperty
{
//... get and set inside
}
public void AMethod ()
{
//... do something
}
}
最后:
class AnotherInterfaceImpl : AnotherInterface
{
private MyInterfaceImpl _member1;
public MyIntefaceImpl member1
{
//... get and set inside
}
...Other implementation
}
为什么编译器报错AnotherInterfaceImpl
没有实现MyInterface
?
您的类AnotherInterfaceImpl
实际上并没有实现AnotherInterface
的所有成员。公共属性AnotherInterfaceImpl.member1
的类型必须是MyInterface
,而不是MyInterfaceImpl
。
注意这个限制只适用于public属性。私有字段AnotherInterfaceImpl._member1
仍然可以是MyInterfaceImpl
类型,因为MyInterfaceImpl
实现了MyInterface
。
为什么编译器抱怨AnotherInterfaceImpl没有实现MyInterface?
因为它没有实现它。它有一个实现它的成员。
这就像说"我的客户对象有一个orders (list)属性;为什么我的客户不是名单?"
如果你有:
interface AnotherInterface : MyInterface
或
class AnotherInterfaceImpl : AnotherInterface, MyInterface
那么可以说AnotherInterfaceImpl
实现了MyInterface
。
您需要"显式地"键入您的成员,因为接口定义了它们。
class AnotherInterfaceImpl : AnotherInterface
{
private MyInterfaceImpl _member1;
public MyInteface member1
{
get{ return _member1;}
set{ _member1 = value;}
}
...Other implementation
}