Bernhard 的个人资料Bernhard Grojer - Blog照片日志列表 工具 帮助

日志


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));

评论

请稍候...
很抱歉,您输入的评论太长。请缩短您的评论。
您没有输入任何内容,请重试。
很抱歉,我们当前无法添加您的评论。请稍后重试。
若要添加评论,需要您的家长授予您相应权限。请求权限
您的家长禁用了评论功能。
很抱歉,我们当前无法删除您的评论。请稍后重试。
您已超过了一天之内允许提供的评论数上限。请在 24 小时后重试。
因为我们的系统表明您可能在向其他用户提供垃圾评论,您的帐户已禁用了评论功能。如果您认为我们错误地禁用了您的帐户,请联系 Windows Live 支持部门
完成下面的安全检查,您提供评论的过程才能完成。
您在安全检查中键入的字符必须与图片或音频中的字符一致。

若要添加评论,请使用您的 Windows Live ID 登录(如果您使用过 Hotmail、Messenger 或 Xbox LIVE,您就拥有 Windows Live ID)。登录


还没有 Windows Live ID 吗?请注册

引用通告

此日志的引用通告 URL 是:
http://bgrojer.spaces.live.com/blog/cns!9D87CECB1EA8118F!1977.trak
引用此项的网络日志