在某些场景(例如 MVVM 视图模型)中,我有时需要拥有私有 setter,因为视图模型公开只能在内部修改的状态。
那么在接口上需要一个私有设置器是错误的吗? (我的意思不是特别是在所描述的场景中)如果不是,为什么 C# 编译器不允许它?
根据定义,接口是供其他代码使用的契约,而不是供私有成员使用的契约。但是,您可以在接口中指定只读属性并在具体类中实现私有设置器:
public interface IFoo
{
string MyReadonlyString { get; }
}
public class FooImplementation : IFoo
{
public string MyReadonlyString { get; private set; }
}