/// <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));
     }
 }
Beispiel #2
0
        /// <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()));
     }
 }