是否有任何干净的方法从表达式树中获取PropertyDescriptor
?
我目前有PropertyInfo
,但理想情况下我需要PropertyDescriptor
,我的代码:
var prop =
(System.Reflection.PropertyInfo)
((MemberExpression)
((Expression<Func<TestClass, long>>)
(p => p.ID)).Body).Member;
我对PropertyDescriptor的需求是因为我需要使用:
if (prop.CanResetValue(this))
{
prop.ResetValue(this);
}
else
{
prop.SetValue(this, null);
}
我无法使用PropertyInfo.SetValue(this, null, null)
,因为它不符合我的需要,因为我需要重置为DefaultValueAttribute
指定的默认值。
答案 0 :(得分:2)
这样的事情怎么样? (未经测试,抱歉!)
var prop = /* same as in your example above */
var descriptors = TypeDescriptor.GetProperties(this);
var descriptor = descriptors[prop.Name];
if (descriptor.CanResetValue(this))
{
descriptor.ResetValue(this);
}
else
{
descriptor.SetValue(this, null);
}