1

我想使用反射枚举所有对象属性,但我想排除引用对象的属性(这应该足够快,因为我在使用 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);
4

1 回答 1

1

使用可以指定参数并确保包含但排除在外的重载。GetPropertiesBindingFlagsBindingFlags.StaticBindingFlags.Instance

例如:

var flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static;
var properties = member.GetType().GetProperties(flags);
于 2014-03-17T10:19:14.710 回答