我想强制我的继承人包含属性Propy,所以我设计了以下内容。
public interface Enforcer
{
string Propy { get; set; }
}
在接口和实际类之间,我需要使用抽象基类来强制执行构造函数签名。然后,实现类和继承类看起来是这样的。
public class Implementer : Enforcer
{
public string Propy { get; set; }
public Implementer(string propy) { Propy = propy; }
}
现在,如果我实例化该类,我可以随机访问我想要限制的属性。我不能将 setter 声明为 private 或 protected,因为可访问性修饰符不能用于接口中的访问器。我不能将属性全部设为私有,因为我需要在 runner 类中访问它(当然是只读的)。
public class Inheritor : Implementer
{
public Inheritor(string propy) : base(propy) { }
}
public class Instantiator
{
public void Main()
{
Inheritor thing = new Inheritor("blopp");
string propy = thing.Propy;
thing.Propy = "bzz";
}
}
我希望最后一条声明无效,但不是倒数第二条。我用谷歌搜索了我的屁股,但我猜这是一个有点不寻常的场景(可以通过简单地允许属性公开并希望用户尊重边界来草率处理。我想纯粹从学术上看如何以正确的方式做到这一点.
斯蒂芬大帝
交互式爱情
跃然一笑
相关分类