为什么 C# 编译器不允许在接口中使用私有属性设置器?
在某些场景(例如 MVVM 视图模型)中,我有时需要拥有私有 setter,因为视图模型公开只能在内部修改的状态。
那么在接口上需要一个私有设置器是错误的吗? (我的意思不是特别是在所描述的场景中)如果不是,为什么 C# 编译器不允许它?
In certain scenario like a MVVM view-model, I sometimes needs to have private setter as the view-model exposes a state that can only be modified internally.
So is this wrong to need a private setter on an interface? (and I mean not particularly in the described scenario) If not, why does the C# compiler does not allow it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据定义,接口是供其他代码使用的契约,而不是供私有成员使用的契约。但是,您可以在接口中指定只读属性并在具体类中实现私有设置器:
By definition, an interface is a contract for other code to use, not for private members. However, you can specify read-only properties in interfaces and implement a private setter in the concrete class: