private static IResource CloneActionRule(string newName, IResource from) { #region Preconditions IResource res = Core.ResourceStore.FindUniqueResource(FilterManagerProps.RuleResName, "Name", newName); if (res != null) { throw new AmbiguousMatchException("Can not assigned a name which is already in use for a cloned rule."); } #endregion Preconditions IResource[][] conditionGroups; IResource[] exceptions; FilterRegistry.CloneConditionTypeLinks(from, out conditionGroups, out exceptions); IResourceList actionsList = FMan.GetActions(from); IResource[] actions = new IResource[actionsList.Count]; for (int i = 0; i < actionsList.Count; i++) { actions[i] = FMan.CloneAction(actionsList[i]); } string[] formTypes = FilterRegistry.CompoundType(from); string eventName = from.GetStringProp("EventName"); IResource newRule = FMan.RegisterRule(eventName, newName, formTypes, conditionGroups, exceptions, actions); return(newRule); }