Exemplo n.º 1
0
        public static void CopyHooks(object original, object copy)
        {
            ObjectTree originalTree = new ObjectTree(original);
            ObjectTree copyTree     = new ObjectTree(copy);

            foreach (object originalReference in originalTree.GetAllObjects())
            {
                FieldInfo field = originalReference.GetType().GetField("Logger");
                if (field != null)
                {
                    object hook = field.GetValue(originalReference);
                    if (hook is ActiveHook)
                    {
                        string path = originalTree.GetPath(originalReference);
                        if (copyTree.Contains(path))
                        {
                            object copyReference = copyTree.GetObject(path);
                            field.SetValue(copyReference, (hook as ActiveHook).Clone());
                        }
                    }
                }
            }
        }