我想使用反射枚举所有对象属性,但我想排除引用对象的属性(这应该足够快,因为我在使用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);
答案 0 :(得分:1)
使用您可以指定BindingFlags
参数的overload of GetProperties
,确保包含BindingFlags.Static
,但不包括BindingFlags.Instance
。
例如:
var flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static;
var properties = member.GetType().GetProperties(flags);