【发布时间】:2013-04-10 07:09:17
【问题描述】:
在我的项目中有一个界面。在接口中有很多方法。我们公司其他开发人员将接口继承到某些类中,并实现我需要的所有方法天气只实现某些方法。那一次我遇到了一些错误。 “不实现接口成员”。我怎么解决这个问题? 例如:-
public interface IComplianceRepository
{
IList<ComplianceModel> LoadComplianceModel(Guid userId);
bool CreateCompliance(ComplianceModel complianceModel);
IList<ComplianceType> LoadComplianceType();
IList<ComplianceStatu> LoadComplianceStatus();
IList<UserDetails> LoadUsersBySchoolId(int schoolId);
Compliance GetComplianceByComplianceId(int complianceId);
bool UpdateCompliance(ComplianceModel complianceModel);
UserProfile GetUserProfileDetails(Guid userId);
FinancialCompliance GetFinancialComplianceByComplianceId(int ComplianceId);
void GetComplianceModelByComplianceId(ComplianceModel complianceModel, int complianceId);
}
更多的开发人员使用上述接口并实现了 all 方法。但我不想实现以下方法
IList<ComplianceModel> LoadComplianceModel(Guid userId);
bool CreateCompliance(ComplianceModel complianceModel);
我该如何解决这个问题?
【问题讨论】:
-
制作两个独立的接口?接口是一种契约,如果你尝试使用一个实现了接口的类但未能提供两种方法的实现,而有人试图调用它,会发生什么?
-
如果很难改变当前的接口并且你不需要实现那些方法,看起来你只需要实现它们然后抛出一个未实现的异常或者返回一个null。
-
ComplianceStatu- 使用实体框架? :-P 无论如何,如果您不必实现整个接口来实现您的目标,那么接口就太宽泛了。将其拆分为多个接口,以便每个接口仅包含符合其描述的方法。另一种方法是实现方法,但从那里抛出 NotImplementedException ... -
@Dennis Rongo 我觉得你的想法不是好的做法
-
这是接口隔离的理想方案。请参考这里的设计原则(oodesign.com/interface-segregation-principle.html)你需要隔离合约,不要把所有的鸡蛋放在一个篮子里。