9月16日
System.Reflection, Properties mit einem bestimmten Typ schreiben
Angenommen man möchte alle Properties eines Objektes auf true oder false setzen:
Zuerst müssen wir uns alle schreibbaren Properties vom Objekt holen um diese verändern zu können.
var c = new Customer();
var propInfos = c.GetType().GetProperties().Where(p => p.CanWrite && p.PropertyType.IsAssignableFrom(typeof(bool)));
foreach (var pi in propInfos)
{
var t = pi.PropertyType;
pi.SetValue(c, true, null);
}
Die Klasse Customer ist hierbei wie folgt definiert:
public class Customer
{
public string FirstName { get; set; }
public bool Active { get; set; }
public bool? IsNew { get; set; }
}
Active, und IsNew würden in diesem Fall auf true gesetzt werden. FirstName wird ausgelassen.
Geht übrigens auch noch kürzer:
var c = new Customer();
c.GetType().GetProperties().Where(p => p.CanWrite && p.PropertyType
.IsAssignableFrom(typeof(bool))).ToList().ForEach(p => p.SetValue(c, true, null));