internal void AddField(FieldDescriptor descriptor) => (descriptor.Type == LoanFieldType.Virtual ? _virtualFields : _standardFields).TryAdd(descriptor.FieldId, descriptor);
static LoanFieldDescriptors() { // Use embedded resource file for built-in field mappings to save assembly space using (var stream = typeof(LoanFieldDescriptors).GetTypeInfo().Assembly.GetManifestResourceStream("EncompassApi.LoanFields.zip")) { using (var zip = new ZipArchive(stream)) { using (var jsonStream = zip.GetEntry("LoanFields.json").Open()) { using (var sr = new StreamReader(jsonStream)) { using (var jr = new JsonTextReader(sr)) { var loanFields = JsonHelper.DefaultPublicSerializer.Deserialize <List <StandardFieldInfo> >(jr); foreach (var loanField in loanFields) { var modelPathString = loanField.ModelPath; var modelPath = CreateModelPath(modelPathString) !; modelPathString = modelPath.ToString(); FieldDescriptor descriptor; if (loanField.Format.HasValue) { descriptor = new NonStandardFieldDescriptor(loanField.FieldId, modelPath, modelPathString, loanField.Description, loanField.Format, loanField.Options, loanField.ReadOnly ?? false); } else { descriptor = new FieldDescriptor(loanField.FieldId, modelPath, modelPathString, loanField.Description); } FieldMappings.AddField(descriptor); } } } } using (var jsonStream = zip.GetEntry("VirtualFields.json").Open()) { using (var sr = new StreamReader(jsonStream)) { using (var jr = new JsonTextReader(sr)) { var virtualFields = JsonHelper.DefaultPublicSerializer.Deserialize <List <VirtualFieldInfo> >(jr); foreach (var virtualField in virtualFields) { var modelPath = $"Loan.VirtualFields['{virtualField.FieldId}']"; var descriptor = new NonStandardFieldDescriptor(virtualField.FieldId, CreateModelPath(modelPath) !, modelPath, virtualField.Description, virtualField.Format, virtualField.Options, readOnly: true); FieldMappings.AddField(descriptor); } } } } using (var jsonStream = zip.GetEntry("LoanFieldPatterns.json").Open()) { using (var sr = new StreamReader(jsonStream)) { using (var jr = new JsonTextReader(sr)) { var loanFieldPatterns = JsonHelper.DefaultPublicSerializer.Deserialize <List <StandardFieldInfo> >(jr); foreach (var loanFieldPattern in loanFieldPatterns) { var modelPathPattern = loanFieldPattern.ModelPath; var descriptor = new FieldDescriptor(loanFieldPattern.FieldId, CreateModelPath(string.Format(modelPathPattern, 1)) !, modelPathPattern, loanFieldPattern.Description, multiInstance: true); FieldPatternMappings.AddField(descriptor); } } } } using (var jsonStream = zip.GetEntry("VirtualFieldPatterns.json").Open()) { using (var sr = new StreamReader(jsonStream)) { using (var jr = new JsonTextReader(sr)) { var virtualFieldPatterns = JsonHelper.DefaultPublicSerializer.Deserialize <List <VirtualFieldInfo> >(jr); foreach (var virtualFieldPattern in virtualFieldPatterns) { var modelPathPattern = $"Loan.VirtualFields['{virtualFieldPattern.FieldId}']"; var descriptor = new NonStandardFieldDescriptor(virtualFieldPattern.FieldId, CreateModelPath(string.Format(modelPathPattern, 1)) !, modelPathPattern, virtualFieldPattern.Description, virtualFieldPattern.Format, virtualFieldPattern.Options, readOnly: true, multiInstance: true); FieldPatternMappings.AddField(descriptor); } } } } } } }