Esempio n. 1
0
        public ReadOnlyDictionary <TKey, TValue> DeepCopy(ReadOnlyDictionary <TKey, TValue> input, CopyContext context)
        {
            if (context.TryGetCopy <ReadOnlyDictionary <TKey, TValue> >(input, out var result))
            {
                return(result);
            }

            if (input.GetType() != typeof(ReadOnlyDictionary <TKey, TValue>))
            {
                return(context.Copy(input));
            }

            var temp = new Dictionary <TKey, TValue>(input.Count);

            foreach (var pair in input)
            {
                temp[_keyCopier.DeepCopy(pair.Key, context)] = _valueCopier.DeepCopy(pair.Value, context);
            }

            result = new ReadOnlyDictionary <TKey, TValue>(temp);
            context.RecordCopy(input, result);
            return(result);
        }