/// <summary> /// Copies an object's data to another object. /// </summary> /// <typeparam name="T">The type of object to copy.</typeparam> /// <param name="src">The object to copy.</param> /// <param name="dest">The object to copy the source object's data to.</param> public static void CopyTo(this object src, object dest, IDCopyBehavior rootBehavior = IDCopyBehavior.PreserveSource, IDCopyBehavior subordinateBehavior = IDCopyBehavior.PreserveSource) { if (src.GetType() != dest.GetType()) { throw new Exception("Can only copy objects onto objects of the same type."); } dest.InjectFrom(new OnlySafePropertiesInjection(src, true, rootBehavior, subordinateBehavior), src); }
public OnlySafePropertiesInjection(object root, bool deep, IDCopyBehavior rootBehavior, IDCopyBehavior subordinateBehavior, IDictionary <object, object> known = null) { Root = root; DeepCopy = deep; RootBehavior = rootBehavior; SubordinateBehavior = subordinateBehavior; if (known != null) { foreach (var kvp in known) { knownObjects.Add(kvp); } } }
/// <summary> /// Copies an object's data to another object. Skips the ID property. /// </summary> /// <typeparam name="T">The type of object to copy.</typeparam> /// <param name="src">The object to copy.</param> /// <param name="dest">The object to copy the source object's data to.</param> public static void CopyToExceptID(this IReferrable src, IReferrable dest, IDCopyBehavior subordinateBehavior) { src.CopyTo(dest, IDCopyBehavior.PreserveDestination, subordinateBehavior); }