【发布时间】:2011-07-31 17:44:10
【问题描述】:
我正在尝试为类的属性设置属性值。
[FooAttr(ThePropertyIWantToSet=null)]
public class Foo
{
}
Foo theFoo = new Foo();
theFoo.SetAttributeProperty<FooAttrAttribute>("ThePropertyIWantToSet", theValueIWantToSet);
这是我写的 SetAttributeProperty 扩展方法。它编译并运行,但似乎没有设置属性。
public static void SetAttributeProperty<T>(this object instance, string fieldName, object value) where T : Attribute
{
var attr = instance.GetType().GetCustomAttributes(typeof (T), false).FirstOrDefault();
PropertyInfo pi = attr.GetType().GetProperty(fieldName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty);
pi.SetValue(attr, value, null);
}
有什么我可能遗漏的想法吗?
【问题讨论】:
-
您是否尝试为属性设置默认值?
标签: c# reflection custom-attributes