Mono.Addins.ExtensionTree.ReadComplexCondition C# (CSharp) Méthode

ReadComplexCondition() private méthode

private ReadComplexCondition ( Mono.Addins.Description.ExtensionNodeDescription elem, BaseCondition parentCondition ) : BaseCondition
elem Mono.Addins.Description.ExtensionNodeDescription
parentCondition BaseCondition
Résultat BaseCondition
        BaseCondition ReadComplexCondition(ExtensionNodeDescription elem, BaseCondition parentCondition)
        {
            if (elem.NodeName == "Or" || elem.NodeName == "And" || elem.NodeName == "Not") {
                ArrayList conds = new ArrayList ();
                foreach (ExtensionNodeDescription celem in elem.ChildNodes) {
                    conds.Add (ReadComplexCondition (celem, null));
                }
                if (elem.NodeName == "Or")
                    return new OrCondition ((BaseCondition[]) conds.ToArray (typeof(BaseCondition)), parentCondition);
                else if (elem.NodeName == "And")
                    return new AndCondition ((BaseCondition[]) conds.ToArray (typeof(BaseCondition)), parentCondition);
                else {
                    if (conds.Count != 1) {
                        addinEngine.ReportError ("Invalid complex condition element '" + elem.NodeName + "'. 'Not' condition can only have one parameter.", null, null, false);
                        return new NullCondition ();
                    }
                    return new NotCondition ((BaseCondition) conds [0], parentCondition);
                }
            }
            if (elem.NodeName == "Condition") {
                return new Condition (AddinEngine, elem, parentCondition);
            }
            addinEngine.ReportError ("Invalid complex condition element '" + elem.NodeName + "'.", null, null, false);
            return new NullCondition ();
        }