限制在包含它的类之外使用List.Add()

时间:2018-04-30 19:04:45

标签: c# xaml collections encapsulation

我在班级List<>中有MyClass类型的公共属性。它是公共的,因为MyClass之外的代码(包括XAML绑定)需要能够访问和更改数据。但是,MyClass之外的元素不应该做的一件事就是调用Add()方法。向列表添加新方法的唯一方法应该是通过MyClass.MyListAdder()方法。

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:0)

您可以尝试切换到ReadOnlyCollection<T>。它的API与List<T>略有不同,但可能足以满足您的需求。

答案 1 :(得分:0)

这可能是您正在寻找的:

List<object> someList = new List<object>();

public ReadOnlyCollection<object> SomeList
{
    get
    {
        return someList.AsReadOnly();
    }
}