C#接口设计指南,接口实现接口

Jet*_*lly 0 c# interface

在下面的场景中是否有使用接口的设计指南?

可以在DerivedClass或ISomeInterface接口或两者中声明IDescription.3个选择,什么指导方针可以帮助我确定哪个是最好的.

public interface IDescription
{
    String Description { get; }
}

public interface ISomeInterface
{
    String Name { get; }
    String Description { get; }
}

public class DerivedClass : Base, ISomeInterface, IDescription
{
    public String Description { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

Sas*_*sha 5

它取决于具体的接口和它们的逻辑关系.每种情况都没有通用的解决方案.您提到的2个选项在某些情况下是正确的:

  • 如果接口不相关(例如IDisposable和IEnumerable),那么类最好实现两个不相关的接口.
  • 如果接口是相关的.例如IClientAPI和IAdminAPI,那么管理界面可以从客户端的界面派生,因为管理员可以做普通用户可以做的一切,加上一些额外的操作.

如果尽可能在编写良好的代码中,派生接口并同时实现父接口和子接口的情况很少见.你总是可以避免它.如果为类本身指定接口第二次,我没有看到任何问题.同时也没有利润.所以最好不要这样做.

重要说明:不要仅基于匹配的属性名构建继承层次结构 - 它们可以巧合相同.在创建基类或接口之前,始终要考虑这是巧合还是固定关系.否则,你会万吨接口等结束了IDescription,IName,IID等这并不意味着任何东西,只是代码的复杂性.