在运行时添加对象属性未发生

5
我试图在某个对象上添加属性。这个对象可以是 int、string、List 或任何其他类型。
我尝试使用 TypeDescriptor.AddAttributes(object, attrList.ToArray());,但是当我执行 object.GetType().GetCustomAttributes(false) 时,这些属性的列表不会显示出来。
为什么呢?请问有什么解决方法?
最好的祝福,
Gabriel Paulsson
1个回答

8

很遗憾,这种方法不能动态地改变类型的元数据,最终只会返回包含您添加的属性的TypeDescriptor

您需要保留AddAttributes方法的返回值,并从那里进行查询...

var myObject = { ... }

var typeDescriptionProvider = TypeDescriptor.AddAttributes(myObject, attrList.ToArray());

var attributes = typeDescriptionProvider.GetTypeDescriptor(myObject).GetAttributes();

你可以将类型描述符视为类型元数据本身(固定)和你在运行时添加的任何元数据(动态)的联合体。

天啊,我刚刚浪费了2到3个小时尝试动态添加AspNetCompatibilityRequirementsAttribute,而那是我的最后一次机会。 - marcelo-ferraz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接