/// <summary> /// /// </summary> /// <param name="deviceType"></param> /// <param name="operaNode"></param> /// <returns></returns> private static IOpera CreateComplexOpera(string deviceType, XmlNode operaNode) { OperaCollection operas = new OperaCollection(); foreach (XmlNode childOperaNode in operaNode.ChildNodes) { switch (childOperaNode.Name) { case DeviceDefineNodeNames.Opera: string childOperaName = GetAttribute((XmlElement)childOperaNode, DeviceDefineNodeNames.OperaName); IOpera childOpera = Create(deviceType, childOperaName, operaNode.ParentNode); if (childOpera == null) { string msg = string.Format("cannot create opera '{0}.{1}' from '{2}'", deviceType, childOperaName, operaNode.ParentNode.InnerXml); throw new ConfigException(msg); } operas.Add(childOpera); break; default: throw new ConfigException( string.Format("unexpectd node '{0}' in '{1}'", childOperaNode.Name, operaNode.InnerXml)); } } string operaName = GetAttribute((XmlElement)operaNode, DeviceDefineNodeNames.Name); return(new ComplexOpera(deviceType, operaName, operas)); }
public ComplexOpera(string deviceType, string name, OperaCollection childOperas) { if (string.IsNullOrEmpty(deviceType)) { throw new ArgumentException("deviceType is null or empty"); } if (childOperas == null || childOperas.Count == 0) { throw new ArgumentException("childOperas is null or empty"); } this._deviceType = deviceType; this.Name = name; this._childOperas = childOperas; }