【发布时间】:2016-04-24 15:50:59
【问题描述】:
我想在接口级别强制对属性的 getter 或 setter 进行访问,以便在实现它的类中遵循相同的操作。我想做如下的事情:
public interface IExample
{
string Name
{
get;
internal set;
}
}
public class Example : IExample
{
private string _name = String.Empty;
string Name
{
get
{
return _name;
}
internal set
{
_name = value;
}
}
}
但不幸的是,据我所知,这在 C# 中是不允许的。我认为这是因为接口仅用于公开具有公共访问权限的内容(我一点也不知道!)。
我需要的是一种使用任何其他编码模式(最好使用接口)来实现它的方法,这将帮助我在其所有实现的类中强制对属性的 getter 或 setter 进行特定访问。
我用谷歌搜索了这个并试图通过 MSDN 文档来解决这个问题,但没有运气!
【问题讨论】:
-
你不能通过接口强制执行
-
接口不是这样工作的。它们旨在定义公共访问。为您的问题使用抽象类。
-
没有。就我通过 google 和 docs 进行的搜索而言,界面并不意味着它是传达的内容!
-
@Mafii 这会导致数据隐藏,我认为这不是这里的意图。
-
@Mafii:这就是我之前的想法,但是除了对 getter/setter 的强制访问之外,我没有任何具体的东西可以放入抽象类中。是的,正如 Drew 所说,这会导致数据隐藏。我想要的是,任何实现接口的人都不应被允许访问已实现属性(我的意思是通过类或接口)的 getter/setter,而不是设计中允许的。
标签: c# design-patterns interface