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

发布于 2024-12-10 11:27:10 字数 133 浏览 0 评论 0原文

在某些场景(例如 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

诗化ㄋ丶相逢 2024-12-17 11:27:10

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

public interface IFoo
{
    string MyReadonlyString { get; }
} 

public class FooImplementation : IFoo
{
    public string MyReadonlyString { get; private set; }
}

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:

public interface IFoo
{
    string MyReadonlyString { get; }
} 

public class FooImplementation : IFoo
{
    public string MyReadonlyString { get; private set; }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文