プログラムの方法やパラメータに属性を追加します
-
25-09-2019 - |
質問
私は、実行時におけるタイプに属性を追加するTypeDescriptor.AddAttributesを使用することができます。どのように私は、メソッドおよびパラメータに同じことを行うのですか? (多分2つの別々の質問...)
解決
TypeDescriptor.AddAttributes
は、の非常にの特定のユースケースに影響を与えます。即ちSystem.ComponentModel
内から。 の反射のの残りのため、それは余分な属性に関するの何ものを知りません。そして実際、System.ComponentModel
は本当に方法やパラメータには適用されません。
だから、要するに、あなたがすることはできません。あなたは(別注)どこかにこの情報を保存し、コンパイル時にそれを追加する必要があります。
他のヒント
私はリフレクターでTypeDescriptor
クラスを分析することからわかるように、.AddAttributes
方法は、内部.AddProvider
メソッドを呼び出します。それに渡されたTypeDescriptionProvider
インスタンスは、実際のメタデータを提供する責任があります。あなたのクラスに[TypeDescriptionProviderAttribute]属性を追加してみてくださいとTypeDescriptionProvider
クラスから派生させ、独自のプロバイダを実装することができます。ドキュメントが言うように、TypeDescriptionProvider.CreateInstance
をオーバーライドすることによって、あなたは、そのタイプのすべての必要な属性を持つ代替物を提供することができます。私は属性も有効になります置換型内のメソッドに適用されると思われます。しかし、私は自分自身が、そう...