private XElement serialize <T>(T entity) where T : IPersistableEntity { var props = typeof(T).GetProperties().Where(x => Attribute.IsDefined(x, typeof(PersistedAttribute))); XElement child = new XElement(typeof(T).Name); foreach (var prop in props) { string propName = prop.Name; { var attr = prop.GetCustomAttribute <PersistedAttribute>(); if (attr.PersistedName != null) { propName = attr.PersistedName; } } XElement propChild = new XElement(propName); propChild.SetValue(Transformers.GetFittingTransformerToString(prop.PropertyType)(prop.GetValue(entity))); child.Add(propChild); } return(child); }