C# 在运行时不在对象上添加属性

C# 在运行时不在对象上添加属性,c#,object,attributes,typedescriptor,C#,Object,Attributes,Typedescriptor,我尝试在某个对象上添加属性。这个对象可以是int、string、List或其他类型 我试着用 TypeDescriptor.AddAttributes(object,attrList.ToArray()) 但当我执行以下操作时,此属性列表不会显示: object.GetType().GetCustomAttributes(false) 为什么 致以最良好的祝愿 Gabriel Paulsson不幸的是,此方法不会动态更改类型的元数据,最终只会返回一个包含您添加的属性的元数据 您需要保留AddAt

我尝试在某个对象上添加属性。这个对象可以是int、string、List或其他类型

我试着用

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

但当我执行以下操作时,此属性列表不会显示:

object.GetType().GetCustomAttributes(false)

为什么

致以最良好的祝愿


Gabriel Paulsson

不幸的是,此方法不会动态更改类型的元数据,最终只会返回一个包含您添加的属性的元数据

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

var myObject = { ... }

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

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

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

Gosh,我刚刚花了2到3个小时尝试动态添加AspNetCompatibilityRequirementsAttribute,这是我最后一次尝试。