我有abstract
班......
public abstract class MyClass
{
// other properties
public bool IsTypeDefault {get;set;}
}
我还有许多继承自MyClass
的其他类,比如MyClassA
,MyClassB
,MyClassC
等。
我有一个定义为...的集合类
public class MyCollection : List<MyClass>
{
public SetAsTypeDefault(MyClass item)
{
}
}
方法SetAsTypeDefault
应该使用MyClass
类型的对象,它会在集合中搜索相同特定类型的项目,在其找到的任何项目上取消设置IsTypeDefault
value为true,然后将匹配传入参数的项设置为true。
我想要的是阻止某人直接在集合的单个实例上设置IsTypeDefault
值,而我无法弄清楚如何去做。
我可以只读取IsTypeDefault
,但是我无法从集合类中设置它。我可以将其设置为private set
并设置一个方法,但该方法需要公开才能从集合中调用。
我只是打算尝试这样做'因为访问这门课程的开发人员将完全不受我的控制。我也无法审查他们的代码,我想确保他们不会搞砸。
我很欣赏我无法阻止他们故意破坏某些东西,例如使用反射,但如果他们这样做,我希望它是因为他们是故意这样做而不是粗心大意。
有可能吗?
帖子后想法
我想我可以将事件附加到IsTypeDefault
属性并让集合类订阅该事件,让它(集合)在允许(或不允许)之前进行验证对集合中实例的更改。是
答案 0 :(得分:1)
如果MyCollection
和MyClass
都在同一个程序集中,但使用它的开发人员不是 - 那么它就是设置setter的简单案例internal
public abstract class MyClass
{
// other properties
public bool IsTypeDefault {get; internal set;}
}