Pra*_*dda 4 c# properties list code-access-security
我有一个名为Person包含属性的父类,父亲和儿童名单.
我希望每个人只使用AddChildMethod来添加子项,而不是List.Add方法,所以我如何限制它的使用?
public class Person
{
private List<Person> _children = new List<Person>();
public string Name { get; set; }
public Person Father { get; set; }
public List<Person> Children
{
get
{
return _children;
}
}
public void AddChild(string name)
{
_children.Add( new Person { Name = name, Father = this });
}
}
Run Code Online (Sandbox Code Playgroud)
Paw*_*ski 12
将子项公开为ReadOnlyCollection:
public IList<Person> Children
{
get
{
return new ReadOnlyCollection<Person>(_children);
}
}
Run Code Online (Sandbox Code Playgroud)
将您的Children属性更改为:
public IList<Person> Children
{
get
{
return _children.AsReadOnly();
}
}
Run Code Online (Sandbox Code Playgroud)
如果你暴露底层List<T>,那么简而言之:你不能.
你可以编写自己的集合包装类,或者可以继承Collection<T>(它仍然可以公开Add,但你可以override在添加之前检测数据).