Unity拦截:具有事件的接口的接口拦截

时间:2012-12-07 16:28:10

标签: c# unity-container unity-interception

我试图使用统一拦截来拦截异常。我定义了一个接口和一个实现该接口的类。

我正在尝试使用InterfaceInterception,但Unity正在抛出一个异常,该类型不可拦截。我检查了我的类,与其他成功拦截的类的唯一区别是这个类和接口声明了一些事件。 如果我使用VirtualMethodInterception,Unity不会抛出异常。

我正在使用c#

为什么VirtualMethodInterceptor工作,为什么InterfaceInterceptor无法正常工作?

以下是实际代码的简化。

public interface IInterfaceToBeInterceptable : IDisposable
{
    event EventHandler<ItemSavedEventArgs> ItemSaved;

    event EventHandler<GenericEventArgs<bool>> JobWasCompleted;

    InvocationResult InvokeJob( JobInvocationParams invocationParams );
}

public class ClassToBeInterceptable : IInterfaceToBeInterceptable
{
    public event EventHandler<ItemSavedEventArgs> ItemSaved;

    public event EventHandler<GenericEventArgs<bool>> JobWasCompleted;

    public InvocationResult InvokeJob( JobInvocationParams invocationParams )
    {
        // Implementation
    }

    public void Dispose()
    {
        // Implementation
    }

    private static GetInfo()

    {
        // Implementation
    }
}

和统一配置是

<register type="IInterfaceToBeInterceptable" mapTo="ClassToBeInterceptable">
     <lifetime type="singleton" />

     <interceptor type="InterfaceInterceptor" />
     <interceptionBehavior type="Exceptionbehavior"  />
     <interceptionBehavior type="LoggingBehaviour" />
  </register>

例外情况如下

异常是:ArgumentException - 类型ClassToBeInterceptable不可拦截。 参数名称:interceptedType

编辑: -

此类被指定为另一个类的依赖项,并且在构建另一个依赖于“另一个”类(或者更确切地说,是“另一个”类的接口)的类时抛出上述异常。

0 个答案:

没有答案