private Node CreateNode(object entity) { Node node = new Node(); node.AddProperty("clazz", entity.GetType().ToString()); entity.GetType().GetProperties().Where(pr => pr.CanRead && MapperHelper.IsAnId(pr) == false).ToList().ForEach(property => { if (MapperHelper.IsPrimitive(property.PropertyType)) { node.AddProperty(property.Name, property.GetValue(entity, null).ToString()); } }); return(node); }
private void UpdateNode(Node nodeToUpdate, object entity) { string propVal = string.Empty; entity.GetType().GetProperties().Where(pr => pr.CanRead && MapperHelper.IsAnId(pr) == false).ToList().ForEach(property => { if (MapperHelper.IsPrimitive(property.PropertyType)) { propVal = property.GetValue(entity, null).ToString(); if (nodeToUpdate.GetProperty(property.Name) != propVal) { nodeToUpdate.SetProperty(property.Name, propVal); } } }); }
private static T Get <T>(Node node) where T : class { T entity = LazyLoader.EnableLazyLoading <T>(); //if (node.GetProperty("clazz") != typeof(T).ToString()) if (_reflectionHelper.CanCast(node.GetProperty("clazz"), typeof(T).ToString()) == false) { throw new InvalidCastException(string.Format("Retrieved object with ID '{0}' is an instance of '{1}' and unable to cast it to '{2}'", node.Id.ToString(), node.GetProperty("clazz"), typeof(T).ToString())); } typeof(T).GetProperties().Where(pr => pr.CanRead && MapperHelper.IsAnId(pr) == false).ToList().ForEach(property => { property.SetValue(entity, MapperHelper.CastPropertyValue(property, node.GetProperty(property.Name)), null); }); entity = MapperHelper.SetIdentity <T>(entity, node.Id); return(entity); }