//INodeContainer /// <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 = default(NodeFactoryBase); if (typeof(NodeFactory) == typeof(IReferenceTypeFactory)) { _df = new ReferenceTypeFactoryBase(TraceEvent); } else if (typeof(NodeFactory) == typeof(IObjectTypeFactory)) { _df = new ObjectTypeFactoryBase(TraceEvent); } else if (typeof(NodeFactory) == typeof(IVariableTypeFactory)) { _df = new VariableTypeFactoryBase(TraceEvent); } else if (typeof(NodeFactory) == typeof(IDataTypeFactory)) { _df = new DataTypeFactoryBase(TraceEvent); } else if (typeof(NodeFactory) == typeof(IObjectInstanceFactory)) { _df = new ObjectInstanceFactoryBase(TraceEvent); } else if (typeof(NodeFactory) == typeof(IPropertyInstanceFactory)) { _df = new PropertyInstanceFactoryBase(TraceEvent); } else if (typeof(NodeFactory) == typeof(IVariableInstanceFactory)) { _df = new VariableInstanceFactoryBase(TraceEvent); } else if (typeof(NodeFactory) == typeof(IMethodInstanceFactory)) { _df = new MethodInstanceFactoryBase(TraceEvent); } else if (typeof(NodeFactory) == typeof(IViewInstanceFactory)) { _df = new ViewInstanceFactoryBase(TraceEvent); } else { throw new NotImplementedException(); } m_Nodes.Add(_df); return((NodeFactory)(INodeFactory)_df); }
//private protected void ExportNodes(List <NodeDesign> members, List <string> path, Action <InstanceDesign, List <string> > createInstanceType) { NodeFactoryBase _currItem = null; foreach (NodeFactoryBase _item in m_Nodes) { try { _currItem = _item; NodeDesign _newNode = _item.Export(new List <string>(path), createInstanceType); members.Add(_newNode); } catch (Exception _ex) { string _msg = String.Format("Error caught while processing the node {0}. The message: {1} at {2}.", _currItem.SymbolicName, _ex.Message, _ex.StackTrace); TraceEvent(TraceMessage.BuildErrorTraceMessage(BuildError.NonCategorized, _msg)); } } }