作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下界面:
public interface IReport
{
int ReportId {get; set;}
}
我有一个具有标识列属性的实体:
public int PaymentReportId {get; set;}
我需要PaymentReport
来实现IReport
在我的 PaymentReport.cs 中,我做了:
public int PaymentReportId {get; set;}
public int ReportId {
get => PaymentReportId;
set {} //no need to ever set this;
}
否则编译器会提示没有实现 setter。
有没有更简洁的方法来做到这一点?
最佳答案
如果您尝试遵守 SOLID,则存在称为接口(interface)隔离的原则。
The interface-segregation principle (ISP) states that no client should be forced to depend on methods it does not use.
您的方法显然违反了原则,因为 PaymentReport
类确实具有本质上不需要的属性 setter 。
考虑将 IReport
拆分为 IReportRead
和 IReportWrite
并仅实现必要的部分。
public interface IReportRead
{
int ReportId { get; }
}
public interface IReportWrite
{
int ReportId { set; }
}
public class PaymentReport : IReportRead {//...}
这样你就有了清晰的抽象,并且不会污染实现。
关于c# - 如何从另一个属性中获取属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55039188/
我是一名优秀的程序员,十分优秀!