以编程方式将属性添加到方法或参数

时间:2010-03-07 19:05:19

标签: c# attributes typedescriptor

我可以使用TypeDescriptor.AddAttributes在运行时向属性添加属性。如何为方法和参数执行相同的操作? (也许是2个单独的问题......)

2 个答案:

答案 0 :(得分:17)

TypeDescriptor.AddAttributes仅影响非常特定用例;即从System.ComponentModel以内。对于 rest 的反射,它知道 nothing 有关额外属性的信息。事实上,System.ComponentModel并不真正适用于方法或参数。

总之;你不能。您需要将此信息存储在其他位置(定制),或在编译时添加它。

答案 1 :(得分:0)

正如我在分析Reflector中的TypeDescriptor类时所看到的,.AddAttributes方法在内部调用.AddProvider方法。传递给它的TypeDescriptionProvider实例实际上负责提供元数据。您可以尝试将[TypeDescriptionProviderAttribute]属性添加到您的类中,并通过派生TypeDescriptionProvider类来实现您自己的提供程序。正如文档所述,通过覆盖TypeDescriptionProvider.CreateInstance,您可以提供其类型具有所有必需属性的替代对象。我怀疑应用于替换类型内的方法的属性也将生效。但是,我自己没试过,所以随便试试......