2012-02-26 9 views
5
私は私がこのようなプロパティに適用されるいくつかの方法を指定することができます属性を作りたい

におけるメソッド参照を作るには?ここでどの属性パラメータ

は、私が見る方法があります。

  1. メイク文字列プロパティとDictionary<string, Func<string, string>>を作成し、実行時に対応するメソッドを移入ランタイム
  2. 中に反射して、対応するメソッドを抽出します。次に、属性の文字列プロパティをキーとしてメソッドを抽出します。このメソッドはリファクタリングに強く、名前を変更するとすべてのメソッドが機能します(辞書キーは同じですが)
  3. 'IConverter'インターフェイスを作成し、typeof(ConverterImpl)に属性を渡します。次に、実行時にコンバータのインスタンスを作成し、そのインタフェースを使用して値を変換します。この方法は私にとって最高のようですが、属性にはTypeというプロパティは一度も使用されていません。

どのアプローチが最適ですか?他のアプローチはありますか?人々は通常どのようにこのようなことをしますか?

答えて

2

最初のオプションはかなり普通ですし、シンプルさの利点があります。リファクタリングの影響を受けやすいと言うのは間違いありませんが、これはめったに「本当の」問題ではありません。

しかし、別のアプローチでは、アブストラクトメソッドでアブストラクトを抽象メソッドにし、アトリビュートのコンバージョンコードでサブクラス化することができます。実行時に(ベース属性として)仮想メソッドを呼び出すだけで、このアプローチはMVCのようなものに共通しています。

個人的には、私は通常、最初のオプションと、安全のためのユニットテスト(リファクタリングなどの場合)を使用します。

関連する問題