c# - 限制从课堂外访问财产
问题描述
让我们上这堂课:
ExampleClass
{
public List<string> MyValue { get; set; }
}
问题是如何限制外部类修改该属性,意味着将对象添加到集合中,生成 new()。
解决方案
您可以将其公开为IEnumerable<string>
列表而不是列表。此接口不允许添加。您仍然可以在内部将其存储为列表,作为私有字段,以便类本身可以在需要时添加或删除。
例如:
class ExampleClass
{
private List<string> _myValue = new List<string>();
public IEnumerable<string> MyValue
{
get
{
foreach (var s in _myValue) yield return s;
}
}
}
如果调用者想使用自己的列表,它当然可以这样做:
var list = exampleClass.MyValue.ToList();
此时调用者拥有它,很明显它选择添加的任何内容都与原始列表无关。
推荐阅读
- php - 在 WooCommerce 中为可变产品设置计算价格
- spring-integration - Spring 集成负载平衡到 JMS 队列
- javascript - 触发另一个动作时,处于redux状态的对象消失
- java - 相当于 java PBKDF2WithHmacSHA1 的 Python
- greenkeeper - 当其他组也存在时,我可以将默认组包含到 greenkeeper.json
- java - 如何从用户输入中转义撇号
- r - R 错误中的 3D 绘图
- angular - Angular 6 - 如何向材料表添加分页
- python-3.x - 在python中从pdf文件中读取和提取文本时单词之间没有空格?
- android - LinearLayout 变色(平滑动画)