在 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")

因为字典是一种引用类型。

那么我怎样才能避免这种情况。允许用户在不更改的情况下访问引用属性。

在 C# 中,如何禁止用户设置我的引用属性

您可以尝试以只读方式返回字典:

public IDictionary<int, string> Configurations 
{ 
  get { return new ReadOnlyDictionary(_configurations); } 
}

听起来你想公开一个ReadOnlyDictionary您可以在每次访问属性时创建一个新字段,也可以有两个字段 - 一个用于可写字典(您永远不会公开),另一个用于只读包装器。