在 C# 中,如何禁止用户设置我的引用属性
本文关键字:用户 设置 我的 属性 引用 禁止 何禁止 | 更新日期: 2024-11-07 12:35:11
老实说,我知道我可以错过set子句以避免用户设置我的属性。像下面的代码:
private Dictionary<int, string> _configurations = new Dictionary<TState, StateConfiguration>();
public Dictionary<int, string> Configurations { get { return _configurations; } }
因此,我们不能在外部代码上运行以下代码:
XXX.Configurations = new Dictionary<int, string>();
它提示:
Property or indexer 'XXX.Configurations' cannot be assigned to -- it is read only
但是我们可以像下面的代码一样更改值:
XXX.Configurations.Add(1,"1000")
因为字典是一种引用类型。
那么我怎样才能避免这种情况。允许用户在不更改的情况下访问引用属性。
您可以尝试以只读方式返回字典:
public IDictionary<int, string> Configurations
{
get { return new ReadOnlyDictionary(_configurations); }
}
听起来你想公开一个ReadOnlyDictionary
。您可以在每次访问属性时创建一个新字段,也可以有两个字段 - 一个用于可写字典(您永远不会公开),另一个用于只读包装器。