添加对Ninject.Extensions.Interception.DynamicProxy的引用会导致不明确的匹配异常

时间:2011-03-11 01:36:51

标签: asp.net-mvc-3 ninject ninject-extensions ninject-interception

我已将Ninject配置为在ASP.NET MVC 3应用程序中执行DI。这工作正常,它将适当的类注入我的控制器。

当我尝试添加Ninject.Extensions.Interception来处理我的应用程序时,我开始得到一个模糊的匹配异常。这只发生在我添加Ninject.Extensions.Interception.DynamicProxy程序集时。如果我删除此程序集,它再次运行正常。我还引用了Ninject.Extensions.Intereception和Castle.Core。

请注意,我没有在应用程序中配置拦截。我只是添加一个引用,这个错误开始发生。

我正在使用Ninject 2.2.1.0和Ninject.Extensions.Interception 2.2.0.0。

private const BindingFlags DefaultBindingFlags =
    BindingFlags.Public |
    BindingFlags.NonPublic |
    BindingFlags.Instance;

public static PropertyInfo GetPropertyFromMethod( this MethodInfo method, Type implementingType )
{
    if ( !method.IsSpecialName )
    {
        return null;
    }

    return implementingType.GetProperty( method.Name.Substring( 4 ), DefaultBindingFlags );
}

堆栈追踪:

  

[AmbiguousMatchException:不明确   匹配发现。]
  System.RuntimeType.GetPropertyImpl(字符串   name,BindingFlags bindingAttr,Binder   binder,类型returnType,类型[]类型,   ParameterModifier []修饰符)   +9402677 System.Type.GetProperty(String name,   BindingFlags bindingAttr)+31
  Ninject.Extensions.Interception.Infrastructure.Language.ExtensionsForMethodInfo.GetPropertyFromMethod(MethodInfo的   方法,类型实现类型)in   C:\项目\ Ninject \ ninject.extensions.interception \ SRC \ Ninject.Extensions.Interception \基础设施\语言\ ExtensionsForMethodInfo.cs:35   Ninject.Extensions.Interception.Planning.Strategies.InterceptorRegistrationStrategy.Execute(IPLAN   计划)   C:\项目\ Ninject \ ninject.extensions.interception \ SRC \ Ninject.Extensions.Interception \规划\策略\ InterceptorRegistrationStrategy.cs:83   Ninject.Planning<> C_ DisplayClass3.b _1(IPlanningStrategy   s)in   C:\项目\ Ninject \ ninject \ SRC \ Ninject \规划\ Planner.cs:68   Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.Map(IEnumerable 1 series, Action 1 action)in   C:\项目\ Ninject \ ninject的\ src \ Ninject \基础设施\语言\ ExtensionsForIEnumerableOfT.cs:23   Ninject.Planning.Planner.GetPlan(类型   输入   C:\项目\ Ninject \ ninject \ SRC \ Ninject \规划\ Planner.cs:68   Ninject.Activation.Providers.StandardProvider.Create(IContext   上下文)   C:\项目\ Ninject \ ninject \ SRC \ Ninject \激活\提供商\ StandardProvider.cs:74   Ninject.Activation.Context.Resolve()   在   C:\项目\ Ninject \ ninject的\ src \ Ninject \激活\ Context.cs:157   Ninject.KernelBase.b__7(IContext   上下文)   C:\项目\ Ninject \ ninject \ SRC \ Ninject \ KernelBase.cs:375

1 个答案:

答案 0 :(得分:1)

已在Ninject.Extensions.Interception 2.2.1.0中修复