Type type = this.GetType();
PropertyInfo[] properties = type.GetProperties();
reader.Read();
while (reader.Read())
{
PropertyInfo property = properties.GetPropertyByXmlElement(reader.Name);
if (property != null)
{
property.SetValue(this, reader.ReadElementContentAs(property.PropertyType, null));
}
}
this is the extension method `GetPropertyByXmlElement(string)`
public static PropertyInfo GetPropertyByXmlElement(this PropertyInfo[] properties, string name)
{
XmlElementAttribute attr = new XmlElementAttribute(name);
PropertyInfo property = (
from p in properties
where p.GetCustomAttributes().Any(a => a.Equals(attr))
select p)
.FirstOrDefault();
return property;
}