C#のリフレクションとカスタム属性を使用して、一連のタイプを集中管理クラスに簡単に登録することができます(つまり、静的メソッドを使用して文字列キーを取得し、関連する型の適切なメソッド/パラメータ)。他の質問や他の場所を見ると、ライブラリーになることを意図しているので、アセンブリのすべてのパブリックタイプを繰り返し処理し、各タイプに適切なものがあるかどうかを確認するのが最善の方法です関連する値を基礎となる辞書に追加する前に反射と反復は間違いなく遅くなりますが、一度しか起こらないので、私はそれを生きることができます。.NET標準でTypeのカスタム属性を取得する
残念ながら、タイプから属性を取得する方法がわかりません。メソッドとアセンブリについては、System.Reflection.Extensions
のCustomAttributeExtensions.GetCustomAttribute<MyAttribute>(base)
を使用できますが、Type
のオーバーロードはありません。 this questionで使用されるAssembly.GetCustomAttribute(Assembly, Type)
と.IsDefined(...)
の方法についても同じです。 Othersuggestionsthe documentationからType
のメソッドを使用すると、mscorelib.dll
からロードされているように見えますが、参照を追加してもIntellisenseに表示されていないようで、その.dllがどのように相互作用するかわかりません。とにかく(任意のプラットフォームで実行する能力を低下させますか?)
明白な何かがありませんか?Attribute
をType
に戻すのは本当に難しいですか?
はあなたが ')(' GetCustomAttributes呼び出そうとする方法の例を表示することができます試してみてください? –
@RenéVogtこれは、 'CustomAttributeExtensions.GetCustomAttribute(base)'が( 'base'は私がテストしようとしていた' Type')のものでしたが、より良い告知され、少しのコンテキストを含めることができたと認めます。いずれにせよ、Connellの答えが働いた。 –
WovenTales