我可以使用TypeDescriptor.AddAttributes在运行时为类型添加属性。如何在方法和参数上执行相同的操作?(也许是两个不同的问题...)
我可以使用TypeDescriptor.AddAttributes在运行时为类型添加属性。如何在方法和参数上执行相同的操作?(也许是两个不同的问题...)
TypeDescriptor.AddAttributes
只对一个非常特定的用例产生影响,即从System.ComponentModel
内部。对于反射的其他部分,它并不了解额外属性的信息。而且,System.ComponentModel
实际上并不适用于方法或参数。
简而言之,你无法在这里完成添加。你需要将此信息存储在其他地方(自定义),或在编译时添加。
TypeDescriptor
和 TypeDescriptionProvider
)? - Shimmy WeitzhandlerIUser
的User
类。生成的客户端实体实现了IIdentity.IsAuthenticated
,我想用[Display(AutoGenerateField=false)]
属性来标记它。我尝试在服务器上创建一个匹配的虚拟属性,并将其标记为Exclude
,以便它不会被重复生成,然后在元数据主体类中为其添加元数据。应该为客户端上现有的属性生成元数据,但这并没有起作用。生成的IsAuthenticated
在客户端上仍然没有被标记。 - Shimmy WeitzhandlerTypeDescriptor
类,我发现.AddAttributes
方法内部调用了.AddProvider
方法。传递给它的TypeDescriptionProvider
实例实际上负责提供元数据。您可以尝试向您的类添加[TypeDescriptionProviderAttribute]属性,并通过派生自TypeDescriptionProvider
类来实现自己的提供程序。正如文档所说,通过重写TypeDescriptionProvider.CreateInstance
,您可以提供一个替代对象,其类型具有所有必要的属性。我怀疑应用于替换类型内部方法的属性也会生效。但是,我自己没有尝试过,所以请随意尝试...