我有以下字典并希望使其不可变;
var dict = ConcurrentDictionary<Type, ConcurrentDictionary<Type, Action>>
然后我打电话
var immmutableDict = dict.ToImmutableDictionary();
然而,这仍然会给ConcurrentDictionary<Type, Action>
我相信的内部字典。
如何使用现有函数以线程安全的方式制作整个字典的不可变副本,或者我是否需要锁定整个操作以确保原子转换?
ImmutableDictionary<Type, ImmutableDictionary<Type, Action>>
或者,如果上述方法不可行,我可以重构代码以从一开始就使用 ReadOnlyDictionary 字典,但是我面临与内部字典相同的挑战,以使其在构造过程中只读:
var dict2 = new Dictionary<Type, Dictionary<Type, InstanceProducer>>();
/* snip perform adds to above dictionary to initialise state */
var immutableDict = dict2.ReadOnlyDictionary(); // ????
// where ReadOnlyDictionary<Type, ReadOnlyDictionary<Type, InstanceProducer>>(); is returned
// i need to make the above immutable with an immutable internal dictionary