/// <summary> /// Load design from file /// </summary> /// <param name="designFile"></param> /// <param name="assigner"></param> /// <param name="resolver"></param> /// <returns></returns> public static IModelDesign LoadTypeDictionary(string designFile, INodeIdAssigner assigner = null, INodeResolver resolver = null) { using (var stream = File.OpenRead(designFile)) { return(LoadTypeDictionary(stream, assigner, resolver)); } }
/// <summary> /// Load design from input stream /// </summary> /// <param name="design"></param> /// <param name="assigner"></param> /// <param name="resolver"></param> /// <returns></returns> public static IModelDesign Load(Stream design, INodeIdAssigner assigner = null, INodeResolver resolver = null) { try { var model = design.DeserializeFromXml <ModelDesign>(); return(new ModelDesignFile(model, assigner, resolver ?? new CompositeModelResolver())); } catch (Exception ex) { // Try to load as type dictionary if (!design.CanSeek) { // Stream is already partitially read - need to reset - if we cannot throw throw; } try { design.Seek(0, SeekOrigin.Begin); return(LoadTypeDictionary(design, assigner, resolver)); } catch { #pragma warning disable CA2200 // Rethrow to preserve stack details throw ex; #pragma warning restore CA2200 // Rethrow to preserve stack details } } }
/// <summary> /// Load design from input stream /// </summary> /// <param name="design"></param> /// <param name="assigner"></param> /// <param name="resolver"></param> /// <returns></returns> public static IModelDesign LoadTypeDictionary(Stream design, INodeIdAssigner assigner = null, INodeResolver resolver = null) { var types = Types.Load(design, resolver as ITypeResolver); return(new ModelDesignFile(types.ToModelDesign(), assigner, resolver ?? new CompositeModelResolver())); }
/// <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())); } }