c# - 将 Dictionary<TKey, List<TValue>> 转换为 ReadOnlyDictionary<TKey, ReadOnlyCollection<TValue>>

标签 c# .net dictionary readonly-collection

我有一个字典如下:

public enum Role { Role1, Role2, Role3, }
public enum Action { Action1, Action2, Action3, }

var dictionary = new Dictionary<Role, List<Action>>();

dictionary.Add(RoleType.Role1, new Action [] { Action.Action1, Action.Action2 }.ToList());

现在我希望能够构造一个值类型也是只读的只读字典,如下所示:

var readOnlyDictionary = new ReadOnlyDictionary<Role, ReadOnlyCollection<Action>>(dictionary);

由于 TValue 中的差异,最后一行显然会导致编译时错误类型。

使用 List<TValue>也是必要的,因为原始字典是从外部源以编程方式填充的。

是否有一种简单的方法来执行此转换?

最佳答案

将字典转换为 ReadOnlyDictionary 就像将常规字典作为参数传递给 ReadOnlyDictionary 的构造函数一样简单:

var myDict = new Dictionary<K, V>();

var myReadOnlyDict = new ReadOnlyDictionary<K, V>(myDictionary);

关于c# - 将 Dictionary<TKey, List<TValue>> 转换为 ReadOnlyDictionary<TKey, ReadOnlyCollection<TValue>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35734143/

相关文章:

c# - 使用 C# 从 Windows 8 读取惯用手设置

c# - 为什么不能将 new[] {AnonymousType, AnonymousType} 强制转换为 IEnumerable?

c# - 使用 WHERE 子句对 Excel 进行 OLE CALL

ios - 在 Swift 4 中使用字典填充 UITableView 数据

c# - 有什么方法可以获取逻辑驱动器中的文件列表(路径错误)?

c# - ImageMagick .net c# mp4/webm 视频在没有伪影的情况下获得 N 帧?

c++ - 命名管道程序在一台计算机上工作,服务器在另一台计算机上停止工作

c# - 具有通用接口(interface)和组合的简单注入(inject)器 - 不注册接口(interface)

java - ConcurrentSkipListMap 是否对键修改进行排序? (以及其他自动排序结构)

python - 将多个 pandas 列转换为 json