public Transformation Clone()
{
Transformation t = (Transformation)this.MemberwiseClone();
t.m_transformParams = new Dictionary<string, object>();
foreach (var key in m_transformParams.Keys)
{
var value = m_transformParams[key];
if (value is Array)
{
t.Add(key, ((Array)value).Clone());
}
else if (value is String || value is ValueType)
{
t.Add(key, value);
}
else if (value is Dictionary<string, string>)
{
t.Add(key, new Dictionary<string, string>((Dictionary<string, string>)value));
}
else
{
throw new ApplicationException(String.Format("Couldn't clone parameter '{0}'!", key));
}
}
if (m_nestedTransforms != null)
{
t.m_nestedTransforms = new List<Transformation>();
foreach (var nestedTransform in m_nestedTransforms)
{
t.m_nestedTransforms.Add(nestedTransform.Clone());
}
}
return t;
}