/// <summary> /// Completely replaces this node with another node tree, positioning the new tree in the place of local node. /// Existing node is deleted after this operation completes, in its place child nodes from other node are inserted /// preserving their existing order. Attributes of other node get merged into parent of existing node /// </summary> public void Include(ConfigSectionNode existing, ConfigSectionNode other) { if (!Root.Exists) { return; } if (IsReadOnly) { throw new ConfigException(StringConsts.CONFIGURATION_READONLY_ERROR); } if (existing == null || other == null) { throw new ConfigException(StringConsts.ARGUMENT_ERROR + "Configuration.Include(null|null)"); } if (existing.Configuration != this) { throw new ConfigException(StringConsts.CONFIGURATION_NODE_DOES_NOT_BELONG_TO_THIS_CONFIGURATION_ERROR.Args(existing.RootPath)); } if (other.Configuration == this) { throw new ConfigException(StringConsts.CONFIGURATION_NODE_MUST_NOT_BELONG_TO_THIS_CONFIGURATION_ERROR.Args(other.RootPath)); } if (existing == Root) { throw new ConfigException(StringConsts.CONFIGURATION_CAN_NOT_INCLUDE_INSTEAD_OF_ROOT_ERROR.Args(other.RootPath)); } existing.include(other); }