我试图使用统一拦截来拦截异常。我定义了一个接口和一个实现该接口的类。
我正在尝试使用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
编辑: -
此类被指定为另一个类的依赖项,并且在构建另一个依赖于“另一个”类(或者更确切地说,是“另一个”类的接口)的类时抛出上述异常。