/// <summary> /// Creates an instance of the registered object. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="lookupObject"></param> /// <returns></returns> private object Resolve(LookupObject lookupObject) { if (lookupObject.IsIstantiated && lookupObject.RegistrationType == RegistrationType.Singleton) { return(lookupObject.Instance); } //create an instance of the object var instance = InstanceConstructor(lookupObject.InstanceType); //save instance for singletons if (lookupObject.RegistrationType == RegistrationType.Singleton) { lookupObject.Instance = instance; lookupObject.IsIstantiated = true; } return(instance); }
/// <summary> /// Gets put object and unwraps json objects /// </summary> /// <param name="recObj"></param> /// <param name="schema"></param> /// <returns></returns> private Dictionary <string, object> GetPutObject(Dictionary <string, object> recObj, Schema schema) { var putObj = new Dictionary <string, object>(); foreach (var property in schema.Properties) { var key = property.Id; if (recObj.ContainsKey(key)) { if (recObj[key] == null) { continue; } var rawValue = recObj[key]; switch (property.Type) { case PropertyType.String: try { var lookupMetaJson = JsonConvert.DeserializeObject <LookupMetaJson>(property.PublisherMetaJson); if (lookupMetaJson.IsLookup) { try { var lookupObj = JsonConvert.DeserializeObject <Dictionary <string, object> >( rawValue.ToString()); putObj.Add(key, lookupObj); } catch (Exception) { var lookupObj = new LookupObject { Id = rawValue.ToString() }; putObj.Add(key, lookupObj); } break; } } catch (Exception) { } putObj.Add(key, rawValue); break; case PropertyType.Json: var valueString = JsonConvert.SerializeObject(rawValue); var dataObj = JsonConvert.DeserializeObject <ReadRecordObject>(valueString); if (dataObj != null) { putObj.Add(key, dataObj.Data); } break; default: putObj.Add(key, rawValue); break; } } } return(putObj); }