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