我有一个字典如下:
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/