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

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

TypeDescriptor.AddAttributes仅影响非常具体的用例; 即从System.ComponentModel 。 对于其余的reflection,它对额外属性一无所知 。 事实上, System.ComponentModel并不真正适用于方法或参数。

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

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