我尝试在某个对象上添加属性。该对象可以是int,string,List等等。
我尝试使用
TypeDescriptor.AddAttributes(object, attrList.ToArray());
但是当我这样做时,这个属性列表不显示:
object.GetType().GetCustomAttributes(false)
怎么回事?
致以最诚挚的问候,
Gabriel Paulsson
答案 0 :(得分:6)
不幸的是,此方法不会动态更改该类型的元数据,最终它只会返回TypeDescriptor,其中包含您添加的属性。
您需要保留AddAttributes方法和查询的返回值,而不是......
var myObject = { ... }
var typeDescriptionProvider = TypeDescriptor.AddAttributes(myObject, attrList.ToArray());
var attributes = typeDescriptionProvider.GetTypeDescriptor(myObject).GetAttributes();
您可以将类型描述符视为元数据类型本身(已修复)的联合,以及您在运行时添加的任何元数据(动态)。