質問

次のような状況を持っています。

HandlerAttributeを使用してポリシーの追加を追加したいプライベートメソッドを持っています。このメソッドは、私のインターフェイスで定義されているいくつかの異なるパブリックメソッドによって呼び出されます。私は工場でリポジトリをインスタンス化します。ここで、ラップされたオブジェクトを返します。今まで私は私のプライベートメソッドに対応するポリシー伝票を得ることができません。私はオブジェクトを間違った方法で包んでいますか?リポジトリオブジェクトを直接インスタンス化することで、ラップされたオブジェクトを作成しようとしました。これまで、私はパブリックメソッドに属性を追加しました。その場合、正しく機能しているインターフェイスに属性を追加しました。誰かがこの作品を作る方法について手がかりを持っていることを願っています。

以下の実装を見てください。

// My factory implementation
public static ICacheRepository Repository()
{
    return PolicyInjection.Create<CacheRepository, ICacheRepository>();
}

// My repository 
public class CacheRepository : MarshalByRefObject, ICacheRepository
{
    public void Add(string name)
    {
        Check(name);
    }

    public void Update(string name)
    {
        Check(name);
    }

    public void Delete(string name)
    {
        Check(name);
    }

    [NotNull] // <= HandlerAttribute
    private bool Check(string name)
    {
        return true;
    }
}

// My CacheRepository interface.
public interface ICacheRepository
{
    void Add(string name);
    void Update(string name);
    void Delete(string name);
}
.

役に立ちましたか?

解決

CodePlexのAvanadeサポートからこの問題についてヘルプを獲得しました。彼らはあなたがパブリックメソッド/プロパティを傍受することができると私に言った。また、MSDNで見つけることができるエンタープライズライブラリポリシー注入ブロックのリンクへのリンクも与えました。 http://msdn.microsoft.com/en-us/library/ff650508.aspx#intro_limitations

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top