我可以使用TypeDescriptor.AddAttributes在运行时向属性添加属性。如何为方法和参数执行相同的操作? (也许是2个单独的问题......)
答案 0 :(得分:17)
TypeDescriptor.AddAttributes
仅影响非常特定用例;即从System.ComponentModel
以内。对于 rest 的反射,它知道 nothing 有关额外属性的信息。事实上,System.ComponentModel
并不真正适用于方法或参数。
总之;你不能。您需要将此信息存储在其他位置(定制),或在编译时添加它。
答案 1 :(得分:0)
正如我在分析Reflector中的TypeDescriptor
类时所看到的,.AddAttributes
方法在内部调用.AddProvider
方法。传递给它的TypeDescriptionProvider
实例实际上负责提供元数据。您可以尝试将[TypeDescriptionProviderAttribute]属性添加到您的类中,并通过派生TypeDescriptionProvider
类来实现您自己的提供程序。正如文档所述,通过覆盖TypeDescriptionProvider.CreateInstance
,您可以提供其类型具有所有必需属性的替代对象。我怀疑应用于替换类型内的方法的属性也将生效。但是,我自己没试过,所以随便试试......