我可以在C#中使用子类实现接口吗?

Kyl*_*est 3 c#

给出以下内容:

class A : B {}

interface I
{
 B TheObject {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我能以某种方式这样做吗?

class C : I
{
 public A TheObject {get;set;} 
}
Run Code Online (Sandbox Code Playgroud)

请注意,接口具有基类,实现具有子类.

Kle*_*nux 12

试一试

class C : I
{
 public A TheObject {get;set;} 
 B I.TheObject 
 {
   get { return A; }
   set { A = value as A; }
 }
}
Run Code Online (Sandbox Code Playgroud)

您可能需要根据需要修改B setter.以这种方式实现接口具有以下结果.处理类型为C的变量时,您将无法访问B TheObject.如果需要,您需要声明一个I变量并将其分配给您的C var.以这种方式实现我称为显式实现.

例如

C c = new C();
A a = c.TheObject; // TheObject is an A
I i = c;
B b = i.TheObject;
Run Code Online (Sandbox Code Playgroud)