在运行时没有发生在对象上添加属性

时间:2012-04-13 08:42:09

标签: c# object attributes typedescriptor

我尝试在某个对象上添加属性。该对象可以是int,string,List等等。

我尝试使用

TypeDescriptor.AddAttributes(object, attrList.ToArray());

但是当我这样做时,这个属性列表不显示:

object.GetType().GetCustomAttributes(false)

怎么回事?

致以最诚挚的问候,

Gabriel Paulsson

1 个答案:

答案 0 :(得分:6)

不幸的是,此方法不会动态更改该类型的元数据,最终它只会返回TypeDescriptor,其中包含您添加的属性。

您需要保留AddAttributes方法和查询的返回值,而不是......

var myObject = { ... }

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

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

您可以将类型描述符视为元数据类型本身(已修复)的联合,以及您在运行时添加的任何元数据(动态)。