为什么 C# 编译器不允许在接口中使用私有属性设置器?

问题描述 投票:0回答:1

在某些场景(例如 MVVM 视图模型)中,我有时需要拥有私有 setter,因为视图模型公开只能在内部修改的状态。

那么在接口上需要一个私有设置器是错误的吗? (我的意思不是特别是在所描述的场景中)如果不是,为什么 C# 编译器不允许它?

c# interface properties setter
1个回答
69
投票

根据定义,接口是供其他代码使用的契约,而不是供私有成员使用的契约。但是,您可以在接口中指定只读属性并在具体类中实现私有设置器:

public interface IFoo
{
    string MyReadonlyString { get; }
} 

public class FooImplementation : IFoo
{
    public string MyReadonlyString { get; private set; }
}
© www.soinside.com 2019 - 2024. All rights reserved.