private T GetEntityDomain(Document document) { var simpleDictionary = document.ToDictionary(); var fields = ObjectToDictionaryHelper.ListOfFields <T>(); var objectFields = new Dictionary <string, object>(); foreach (var field in fields) { if (simpleDictionary.ContainsKey(field)) { objectFields.Add(field, simpleDictionary[field]); } } JObject obj = JObject.FromObject(objectFields); return(obj.ToObject <T>()); }
private void SetDocument(T entity, MutableDocument mutableDocument) { var properties = ObjectToDictionaryHelper.ToDictionary(entity); foreach (var prop in properties) { if (prop.Value is int) { mutableDocument.SetInt(prop.Key, (int)prop.Value); } else if (prop.Value is long) { mutableDocument.SetLong(prop.Key, (long)prop.Value); } else if (prop.Value is bool) { mutableDocument.SetBoolean(prop.Key, (bool)prop.Value); } else if (prop.Value is DateTimeOffset) { if ((DateTimeOffset)prop.Value != default(DateTimeOffset)) { mutableDocument.SetDate(prop.Key, (DateTimeOffset)prop.Value); } } else if (prop.Value is double) { mutableDocument.SetDouble(prop.Key, (double)prop.Value); } else if (prop.Value is float) { mutableDocument.SetFloat(prop.Key, (float)prop.Value); } else if (prop.Value is string) { mutableDocument.SetString(prop.Key, (string)prop.Value); } else { mutableDocument.SetValue(prop.Key, prop.Value); } } }