c# - 具有私有添加方法或调整能力的 C# 字典
问题描述
我正在尝试在具有私有 Add 方法/调整值的能力的类中创建一个字典。基本上我希望能够从类外部访问它并查看其中的值,但我不希望任何人能够在不通过类中的方法工作的情况下更改与键关联的值。
我首先尝试创建一个作为字典的属性(因此我可以轻松地尝试使用 getter 和私有 setter 执行我想要的操作),但后来发现这并不完全可能。
我知道可能有一种方法可以使用自定义方法或自定义单独的类来做到这一点,但我想先在这里检查一下,看看 C# 中是否有任何方法可以做到这一点。
让我知道你的想法。谢谢!
解决方案
您可以使用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;
}
}
推荐阅读
- python-3.x - OrderedDict 的抽象子类?蟒蛇3
- azure - 如何从 Azure DevOps 管道向 azure key Vault 写入机密?
- r - R中createDataPartition的y值
- javascript - 如何在js中修剪html内容?
- r - 从列中提取数据以在 R 中创建另一列
- jquery - jquery 滑块花式框显示悬停箭头。但是我网站上的副本在悬停时缺少箭头
- openshift - glusterfs 和 glusterfs_registry 可以共享相同的节点/设备
- c# - 导出/导入 png 文件 Android Unity
- react-native - 调用函数作为组件 React-Native
- r - ggplot 使用黄土日期 - 将轴标签从数字更改为字符