using System;
using System.Collections;
namespace Unity.VisualScripting
{
public sealed class DictionaryCloner : Cloner<IDictionary>
{
public override bool Handles(Type type)
{
return typeof(IDictionary).IsAssignableFrom(type);
}
public override void FillClone(Type type, ref IDictionary clone, IDictionary original, CloningContext context)
{
// No support for instance preservation here, but none in FS either, so it shouldn't matter
var originalEnumerator = original.GetEnumerator();
while (originalEnumerator.MoveNext())
{
var originalKey = originalEnumerator.Key;
var originalValue = originalEnumerator.Value;
var cloneKey = Cloning.Clone(context, originalKey);
var cloneValue = Cloning.Clone(context, originalValue);
clone.Add(cloneKey, cloneValue);
}
}
}
}