重写接口';s返回类型
本文关键字:返回类型 接口 重写 | 更新日期: 2023-09-27 18:29:10
希望能做到这一点!
我有一个基本接口
interface IEntity
{
IConfiguration Configuration {get; set;}
}
和一个抽象类
abstract class Entity
{
abstract IConfiguration Configuration {get; set;}
}
现在我将介绍一个继承自"实体"的"客户端"
interface Client : Entity
{
}
客户端有一个子类"配置"
interface IClientConfiguration : IConfiguration
{
}
最后,我希望我的客户端类看起来像这个
class Client : IClient
{
public IClientConfiguration Configuration {get; set;}
}
问题是,C#抱怨我没有返回类Client的IConfiguration。我可以通过声明新的公共IClientConfiguration来覆盖它。。。但在我走这条路之前,我想知道是否有更好的方法来构建并保持最佳实践。
谢谢你的帮助!--Michael
您可以在客户端类中使用显式接口实现:
class Client : IClient
{
public IClientConfiguration Configuration { get; set; }
// Explicit implementation
IConfiguration IEntity.Configuration
{
get { return this.Configuration; }
set { /* what to do here? */ }
}
}
这是在实现IEnumerable<T>因为该接口扩展了IEnumerable。这两个接口都声明了一个名为GetEnumerator
的方法,但返回类型不同(IEnumerator<T>
和IEnumerator
)。
然而,我认为你在某个地方犯了一个设计错误。配置属性为get/set。这给人的印象是,客户端类必须能够接受任何类型的配置。同时,您的Client类似乎只能使用IClientConfiguration
值。令人困惑
我想您可能错过了将"IEntity"接口添加到"Entity"类中。
abstract class Entity : IEntity
{
abstract IConfiguration Configuration {get; set;}
}