2011-01-21 12 views
0

私はこの定型コードを、特定のクラスのプロパティの束に適用したいと思います。この同じコードを何度も繰り返す必要はなく、これらのプロパティメソッドをポストコンパイルまたは実行時に動的に構築できる方法があれば、C#属性をそのプロパティに割り当てることでそれぞれのメソッド(文字列)にわずかな違いがあり、それを反映させてこれらのプロパティを見つけることができます。動的にメソッド/プロパティーボディを構築する

私はPostSharpを認識していますが、私は何か無料またはオープンソースを探しています。例えば

は、代わりにこれを行うに有するので:任意の考え

[MapTo("othername")] 
public string Name { get; set; } 

public string Name { 
    get { return _member.GetValue("othername"); } 
    set { _member.SetValue("othername", value); } 
} 

を...私が持っている各プロパティのために、私はちょうどこれを言いたいですか?

答えて

0

AOP (Aspect Oriented Programming)PostSharpのように見えます。

これはプログラムでコードを挿入することができます(前述のように)、非常に柔軟性があります。

+0

私が言ったように私はPostSharpを認識していますが、もはや無料ではなく、200ドルのライセンスが必要です。実行可能な(無料の)代替案があることをご存じの場合は、教えてください。 – devios1

+0

ええ、私は今それを実現します。私は他の人が提案したフレームワークがあなたの選択肢だと思います。たとえば、 'Mono.Cecil'は無料です。 – decyclone

1
  1. 動的コードの挿入にはMono.Cecilを使用できます。
  2. これらのプロパティを仮想として作成し、これらのプロパティをオーバーライドして、オーバーライドされたプロパティが定義される新しいクラスをアセンブリにコンパイルすることができます。次に、動的生成クラスのインスタンスを作成し、定義されたクラスとして使用する必要があります。
+0

Mono.Cecilはアセンブリ(.DLL)の書き換えにのみ有効ですが、既にアプリケーションドメインに読み込まれているアセンブリを操作するのにはあまり役に立ちません。 – stakx

1

OK、それはおそらくそれ自身の答えに値するでしょう。私はあなたが支払う必要はありませんため、以下のAOPフレームワークを認識しています:

0

は、注射をコーディングするためのオープンソースの代替であるCInject on Codeplexをチェック

関連する問題