/// <summary> /// Load the standard types from the included resources /// </summary> /// <returns></returns> internal static IModelDesign LoadStandardModel() { var assembly = typeof(ModelDesignFile).Assembly; var prefix = assembly.GetName().Name; // Load built in types var builtInTypes = assembly .DeserializeFromXmlManifestResource <ModelDesign>( prefix + ".Stack.Design.BuiltIn.BuiltInTypes.xml"); // Load default type dictionaries var typeDictionary = Types.Standard.ToModelDesign(); // Load standard types var standardTypes = assembly .DeserializeFromXmlManifestResource <ModelDesign>( prefix + ".Stack.Design.BuiltIn.StandardTypes.xml"); // Add all to the standard types (i.e. all in opcfoundation.org/UA) var nodes = new List <NodeDesign>(); nodes.AddRange(builtInTypes.Items); nodes.AddRange(typeDictionary.Items); nodes.AddRange(standardTypes.Items); standardTypes.Items = nodes.ToArray(); standardTypes.TargetVersion = null; // Allow matching to any version var ids = assembly.GetManifestResourceStream( prefix + ".Stack.Design.BuiltIn.StandardTypes.csv"); var identifiers = new IdentifierFile(ids, standardTypes.TargetNamespace, standardTypes.TargetVersion); // Return model return(new ModelDesignFile(standardTypes, identifiers, null)); }
/// <summary> /// Load design from file and optional identifier file /// </summary> /// <param name="designFile"></param> /// <param name="resolver"></param> /// <returns></returns> public static IModelDesign Load(string designFile, INodeResolver resolver = null) { using (var stream = File.OpenRead(designFile)) { var model = stream.DeserializeFromXml <ModelDesign>(); var identifierFile = Path.ChangeExtension(designFile, "csv"); INodeIdAssigner assigner = null; if (File.Exists(identifierFile)) { using (var stream2 = File.OpenRead(identifierFile)) { assigner = new IdentifierFile(stream2, model.TargetNamespace, model.TargetVersion); } } return(new ModelDesignFile(model, assigner, resolver ?? new CompositeModelResolver())); } }