Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何向私有方法添加策略注入_C#_Enterprise Library_Policy Injection - Fatal编程技术网

C# 如何向私有方法添加策略注入

C# 如何向私有方法添加策略注入,c#,enterprise-library,policy-injection,C#,Enterprise Library,Policy Injection,我的情况如下 我们有一个私有方法,我想通过使用handlerAttribute添加policyinjection。此方法由我的接口中定义的几个不同的公共方法调用。我正在工厂中实例化存储库,在那里我返回包装好的对象。到目前为止,我还无法让policyinjection在我的私有方法上运行。我是否用错误的方式包装了对象?我还试图通过直接实例化存储库对象来创建包装对象。到目前为止,我只将该属性添加到公共方法中,在这种情况下,我将该属性添加到工作正常的接口中。希望任何人都有一个如何使这项工作的线索 请参

我的情况如下

我们有一个私有方法,我想通过使用handlerAttribute添加policyinjection。此方法由我的接口中定义的几个不同的公共方法调用。我正在工厂中实例化存储库,在那里我返回包装好的对象。到目前为止,我还无法让policyinjection在我的私有方法上运行。我是否用错误的方式包装了对象?我还试图通过直接实例化存储库对象来创建包装对象。到目前为止,我只将该属性添加到公共方法中,在这种情况下,我将该属性添加到工作正常的接口中。希望任何人都有一个如何使这项工作的线索

请参见下面我的实现:

// 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上找到,网址为: