0

私は次のような状況に陥っています。

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);
}
4

1 に答える 1

0

CodePlexのAvanadeサポートから、この問題に関するヘルプを入手しました。彼らはあなたがパブリックメソッド/プロパティをインターセプトすることしかできないと私に言いました。また、エンタープライズライブラリポリシーインジェクションブロックの制限へのリンクも提供されました。これは、MSDNのhttp://msdn.microsoft.com/en-us/library/ff650508.aspx#intro_limitationsにあります。

于 2011-05-13T10:47:03.027 に答える