DALアセンブリのすべてのメソッドに対してLinFuインターセプタを作成しようとしています。非常に厄介な取得と手動更新に新しいリポジトリがアセンブリに追加されるたびに必要だアセンブリ内のすべてのタイプのLinFuインターセプタを作成する
[Intercepts(typeof(IFirstRepository))]
[Intercepts(typeof(ISecondaryRepository))]
[Intercepts(typeof(IIAnotherRepository))]
public class DalInterceptor : IInterceptor, IInitialize
{
...
}
:私はこのような何かを行うことができますが。
アセンブリ内の各タイプのプロキシクラスを自動的に作成する方法はありますか?
UPDATE:
私は著者自身(ミスターLaureano)からの提案を使用して、私のプロキシビルダーを更新しましたので、私は今、この持っている:
Func<IServiceRequestResult, object> createProxy = request =>
{
var proxyFactory = new ProxyFactory();
DalInterceptor dalInterceptor = new DalLiteInterceptor();
return proxyFactory.CreateProxy<object>(dalInterceptor);
};
をインターセプタは以前のように設定されています。私が今持っている問題は、プロキシオブジェクトには、元のオブジェクトのコンストラクタとメソッドが含まれていないということです(ジェネリックメソッドのオブジェクトを使用しているので推測しています)。
私はこれを必要なタイプにキャストしているのですか、それとも根本的に何か間違っていますか?
ありがとうございました。
PostSharpについて聞いたことがありますか?それはLinFuでやっていることよりも、表現力をより豊かにします。 –
私たちはLinFuを主にIoCコンテナとして使用しています。アスペクトはデバッグ中にトレースを追加するだけです。私たちはLinFuの弓を使用することに非常に固執していますが、私はPostSharpを今後も試してみようと考えています。ありがとう。 –
コンテナはSystem.Objectではなくサービスタイプ自体のインスタンスを必要とするため、必要なサービスタイプにキャストする必要があります。あなたがしなければならないのは、サービスタイプを使用してプロキシを作成することです。すべて行くように設定する必要があります – plaureano