Exemple #1
0
        /// <summary>
        /// Creates and adds a new node instance of the <see cref="T:UAOOI.SemanticData.InformationModelFactory.INodeFactory" />.
        /// </summary>
        /// <typeparam name="NodeFactory">The type of the node factory must inherit from <see cref="T:UAOOI.SemanticData.InformationModelFactory.INodeFactory" />.</typeparam>
        /// <returns>Returns new object implementing <see cref="T:UAOOI.SemanticData.InformationModelFactory.INodeFactory" />.</returns>
        /// <exception cref="NotImplementedException"></exception>
        public NodeFactory AddNodeFactory <NodeFactory>() where NodeFactory : INodeFactory
        {
            NodeFactoryBase _df = null;

            if (typeof(NodeFactory) == typeof(IReferenceTypeFactory))
            {
                _df = new ReferenceTypeFactoryBase();
            }
            else if (typeof(NodeFactory) == typeof(IObjectTypeFactory))
            {
                _df = new ObjectTypeFactoryBase();
            }
            else if (typeof(NodeFactory) == typeof(IVariableTypeFactory))
            {
                _df = new VariableTypeFactoryBase();
            }
            else if (typeof(NodeFactory) == typeof(IDataTypeFactory))
            {
                _df = new DataTypeFactoryBase();
            }
            else if (typeof(NodeFactory) == typeof(IObjectInstanceFactory))
            {
                _df = new ObjectInstanceFactoryBase();
            }
            else if (typeof(NodeFactory) == typeof(IPropertyInstanceFactory))
            {
                _df = new PropertyInstanceFactoryBase();
            }
            else if (typeof(NodeFactory) == typeof(IVariableInstanceFactory))
            {
                _df = new VariableInstanceFactoryBase();
            }
            else if (typeof(NodeFactory) == typeof(IMethodInstanceFactory))
            {
                _df = new MethodInstanceFactoryBase();
            }
            else if (typeof(NodeFactory) == typeof(IViewInstanceFactory))
            {
                _df = new ViewInstanceFactoryBase();
            }
            else
            {
                throw new NotImplementedException();
            }
            m_Nodes.Add(_df);
            return((NodeFactory)(INodeFactory)_df);
        }
        private Parameter[] RemoveArguments(string parameterKind, Func <XmlElement, Parameter[]> getParameters)
        {
            Parameter[]            _parameters            = null;
            List <NodeFactoryBase> _newChildrenCollection = new List <NodeFactoryBase>();

            foreach (NodeFactoryBase _item in m_Nodes)
            {
                if (_item.SymbolicName.Equals(new XmlQualifiedName(parameterKind, Namespaces.OpcUa)))
                {
                    PropertyInstanceFactoryBase _arg = (PropertyInstanceFactoryBase)_item;
                    _parameters = getParameters(_arg.DefaultValue);
                }
                else
                {
                    _newChildrenCollection.Add(_item);
                }
            }
            m_Nodes = _newChildrenCollection;
            return(_parameters);
        }