/// <summary> /// Create a ModelLoadContext supporting loading from a single-stream, for implementors of ICanSaveInBinaryFormat. /// </summary> internal ModelLoadContext(BinaryReader reader, IExceptionContext ectx = null) { Contracts.AssertValueOrNull(ectx); _ectx = ectx; _ectx.CheckValue(reader, nameof(reader)); Repository = null; Directory = null; Reader = reader; ModelHeader.BeginRead(out FpMin, out Header, out Strings, out LoaderAssemblyName, Reader); }
/// <summary> /// Create a ModelLoadContext supporting loading from a repository, for implementors of ICanSaveModel. /// </summary> internal ModelLoadContext(RepositoryReader rep, Repository.Entry ent, string dir) { Contracts.CheckValue(rep, nameof(rep)); Repository = rep; _ectx = rep.ExceptionContext; _ectx.CheckValue(ent, nameof(ent)); _ectx.CheckValueOrNull(dir); Directory = dir; Reader = new BinaryReader(ent.Stream, Encoding.UTF8, leaveOpen: true); try { ModelHeader.BeginRead(out FpMin, out Header, out Strings, out LoaderAssemblyName, Reader); } catch { Reader.Dispose(); throw; } }