获取除实例属性之外的反射的对象属性

时间:2014-03-17 10:15:57

标签: c# reflection booksleeve getproperties

我想使用反射枚举所有对象属性,但我想排除引用对象的属性(这应该足够快,因为我在使用Redis / Booksleve的缓存解决方案中使用)。

目前我有以下内容,但这会返回所有对象属性,包括实例成员:

var propertyNameAndValues = member.GetType().GetProperties().Where(m => m.GetGetMethod() != null).ToDictionary(i => i.Name, i => Encoding.UTF8.GetBytes(i.GetGetMethod().Invoke(member, null).ToString()));
var task = conn.Hashes.Set(db, string.Format("members:{0}", member.id), propertyNameAndValues);

1 个答案:

答案 0 :(得分:1)

使用您可以指定BindingFlags参数的overload of GetProperties,确保包含BindingFlags.Static,但不包括BindingFlags.Instance

例如:

var flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static;
var properties = member.GetType().GetProperties(flags);