Пример #1
0
        /// <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));
        }
Пример #2
0
        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;
        }