首页 > 解决方案 > 具有私有添加方法或调整能力的 C# 字典

问题描述

我正在尝试在具有私有 Add 方法/调整值的能力的类中创建一个字典。基本上我希望能够从类外部访问它并查看其中的值,但我不希望任何人能够在不通过类中的方法工作的情况下更改与键关联的值。

我首先尝试创建一个作为字典的属性(因此我可以轻松地尝试使用 getter 和私有 setter 执行我想要的操作),但后来发现这并不完全可能。

我知道可能有一种方法可以使用自定义方法或自定义单独的类来做到这一点,但我想先在这里检查一下,看看 C# 中是否有任何方法可以做到这一点。

让我知道你的想法。谢谢!

标签: c#dictionarypropertiesprivate

解决方案


您可以使用IReadOnlyDictionary<TKey,TValue>- 它是所有 Dictionary 类都实现的接口

但是,如果那是您公开的属性的类型,没有Add()要调用的函数。它有 List 和 Collection “兄弟”,处理相同。

请注意,从技术上讲,仍然有人可以将其转换回Dictionary<TKey,TValue>,授予他们完全的 R/W 访问权限。除了安全应用程序之外,这并不真正适用于所有应用程序。如果它很重要,只需分发您内部词典的克隆。

代码可能如下所示:

Dictionary<int, string> SecuredCollection = new Dictionary<int, string>();

public IReadOnlyDictionary<int, string> ThatDictionaryUsersCanOnlyRead
{
    get 
    {
        return SecuredCollection;
    }
}

推荐阅读