C# Ninject中的绑定-提供的泛型参数不';t是否等于泛型类型定义的arity?

C# Ninject中的绑定-提供的泛型参数不';t是否等于泛型类型定义的arity?,c#,.net,generics,ninject,C#,.net,Generics,Ninject,试图使用ninject将我的接口绑定到一个具体的类,但我肯定错过了一些东西,无法让它工作 System.ArgumentException was unhandled by user code HResult=-2147024809 Message=The number of generic arguments provided doesn't equal the arity of the generic type definition. Parameter name: instanti

试图使用ninject将我的接口绑定到一个具体的类,但我肯定错过了一些东西,无法让它工作

System.ArgumentException was unhandled by user code
  HResult=-2147024809
  Message=The number of generic arguments provided doesn't equal the arity of the generic type definition.
Parameter name: instantiation
  Source=mscorlib
  ParamName=instantiation
  StackTrace:
       at System.RuntimeType.MakeGenericType(Type[] instantiation)
       at Ninject.Activation.Providers.StandardProvider.GetImplementationType(Type service) in StandardProvider.cs:line 126
       at Ninject.Activation.Providers.StandardProvider.Create(IContext context) in StandardProvider.cs:line 77
       at Ninject.Activation.Context.Resolve() inContext.cs:line 157
       at Ninject.KernelBase.<>c__DisplayClass10.<Resolve>b__c(IBinding binding) in KernelBase.cs:line 386
       at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
       at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source)
       at Ninject.Planning.Targets.Target`1.GetValue(Type service, IContext parent) in Target.cs:line 197
       at Ninject.Planning.Targets.Target`1.ResolveWithin(IContext parent) inTarget.cs:line 165
       at Ninject.Activation.Providers.StandardProvider.GetValue(IContext context, ITarget target) in StandardProvider.cs:line 114
       at Ninject.Activation.Providers.StandardProvider.<>c__DisplayClass4.<Create>b__2(ITarget target) in StandardProvider.cs:line 96
       at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
       at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
       at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
       at Ninject.Activation.Providers.StandardProvider.Create(IContext context) in StandardProvider.cs:line 96
       at Ninject.Activation.Context.Resolve() inContext.cs:line 157
       at Ninject.KernelBase.<>c__DisplayClass10.<Resolve>b__c(IBinding binding) in KernelBase.cs:line 386
       at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
       at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source)
       at Ninject.Planning.Targets.Target`1.GetValue(Type service, IContext parent) inTarget.cs:line 197
       at Ninject.Planning.Targets.Target`1.ResolveWithin(IContext parent) inTarget.cs:line 165
       at Ninject.Activation.Providers.StandardProvider.GetValue(IContext context, ITarget target) in StandardProvider.cs:line 114
       at Ninject.Activation.Providers.StandardProvider.<>c__DisplayClass4.<Create>b__2(ITarget target) in StandardProvider.cs:line 96
       at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
       at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
       at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
       at Ninject.Activation.Providers.StandardProvider.Create(IContext context) in StandardProvider.cs:line 96
       at Ninject.Activation.Context.Resolve() inContext.cs:line 157
       at Ninject.KernelBase.<>c__DisplayClass10.<Resolve>b__c(IBinding binding) in KernelBase.cs:line 386
       at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
       at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source)
       at PriceCheck.Api.Models.Ninject.NinjectScope.GetService(Type serviceType) in NinjectScope.cs:line 24
       at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage request, Type controllerType, Func`1& activator)
       at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)
  InnerException: 
用户代码未处理System.ArgumentException HResult=-2147024809 Message=提供的泛型参数数量不等于泛型类型定义的arity。 参数名称:实例化 Source=mscorlib ParamName=实例化 堆栈跟踪: 位于System.RuntimeType.MakeGenericType(类型[]实例化) 在StandardProvider.cs中的Ninject.Activation.Providers.StandardProvider.GetImplementationType(类型服务):第126行 在标准提供者中的Ninject.Activation.Providers.StandardProvider.Create(IContext context)中。cs:line 77 在inContext.cs中的Ninject.Activation.Context.Resolve()处:第157行 在KernelBase.cs中的Ninject.KernelBase.c_uu显示class10.b_u_uc(IBinding binding):第386行 在System.Linq.Enumerable.WhereSelectEnumerableInterator`2.MoveNext()中 在System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source)处 在Target.cs中的Ninject.Planning.Targets.Target`1.GetValue(输入服务,IContext父项):第197行 在Target.cs中的Ninject.Planning.Targets.Target`1.resolveinin(IContext父对象)中:第165行 在StandardProvider.cs中的Ninject.Activation.Providers.StandardProvider.GetValue(IContext上下文,ITarget目标)处:第114行 在Ninject.Activation.Providers.StandardProvider.c__显示StandardProvider.cs中的Class4.b__u2(ITarget目标):第96行 在System.Linq.Enumerable.WhereSelectArrayInterator`2.MoveNext()中 在System.Linq.Buffer`1..ctor处(IEnumerable`1源) at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1源) 在StandardProvider.cs中的Ninject.Activation.Providers.StandardProvider.Create(IContext上下文):第96行 在inContext.cs中的Ninject.Activation.Context.Resolve()处:第157行 在KernelBase.cs中的Ninject.KernelBase.c_uu显示class10.b_u_uc(IBinding binding):第386行 在System.Linq.Enumerable.WhereSelectEnumerableInterator`2.MoveNext()中 在System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source)处 在Target.cs中的Ninject.Planning.Targets.Target`1.GetValue(输入服务,IContext父对象):第197行 在Target.cs中的Ninject.Planning.Targets.Target`1.resolveinin(IContext父对象)中:第165行 在StandardProvider.cs中的Ninject.Activation.Providers.StandardProvider.GetValue(IContext上下文,ITarget目标)处:第114行 在Ninject.Activation.Providers.StandardProvider.c__显示StandardProvider.cs中的Class4.b__u2(ITarget目标):第96行 在System.Linq.Enumerable.WhereSelectArrayInterator`2.MoveNext()中 在System.Linq.Buffer`1..ctor处(IEnumerable`1源) at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1源) 在StandardProvider.cs中的Ninject.Activation.Providers.StandardProvider.Create(IContext上下文):第96行 在inContext.cs中的Ninject.Activation.Context.Resolve()处:第157行 在KernelBase.cs中的Ninject.KernelBase.c_uu显示class10.b_u_uc(IBinding binding):第386行 在System.Linq.Enumerable.WhereSelectEnumerableInterator`2.MoveNext()中 在System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source)处 在NinjectScope.cs中的PriceCheck.Api.Models.Ninject.NinjectScope.GetService(类型serviceType):第24行 位于System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceActivator(HttpRequestMessage请求,类型controllerType,Func`1&activator) 在System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage请求,HttpControllerDescriptor controllerDescriptor,类型controllerType) 内部异常: 在这里撞车

   public object GetService(Type serviceType)
        {
            IRequest request = resolutionRoot.CreateRequest(serviceType, null, new Parameter[0], true, true);
            return resolutionRoot.Resolve(request).SingleOrDefault();
        }



  public interface IResponseResult
    {
       void AddError(string key, string errorMessage);
       bool IsValid();
       Dictionary<string, string> Errors { get; }

       ResponseBase Status { get; set; }
    }


 public class ResponseResult<T> : IResponseResult
    {
        public ResponseResult()
        {
            Errors = new Dictionary<string, string>();
            Status = new ResponseBase();
        }

        public void AddError(string key, string errorMessage)
        {
            if (!Errors.ContainsKey(key))
            {
                Errors.Add(key, errorMessage);
            }        
        }

        public bool IsValid()
        {
            if (Errors.Count > 0)
            {
                return false;
            }

            return true;
        }

        public Dictionary<string, string> Errors { get; private set; }
        public T Response { get; set; }

        public ResponseBase  Status { get; set; }
    }


Bind(typeof(IResponseResult)).To(typeof(ResponseResult<>));
公共对象GetService(类型serviceType) { IRequest request=resolutionRoot.CreateRequest(serviceType,null,新参数[0],true,true); 返回resolutionRoot.Resolve(请求).SingleOrDefault(); } 公共接口IResponseResult { 无效加法器(字符串键、字符串错误消息); bool是有效的(); 字典错误{get;} 响应数据库状态{get;set;} } 公共类响应结果:IResponseResult { 公共响应结果() { 错误=新字典(); 状态=新响应基(); } 公共无效加法器(字符串键、字符串错误消息) { 如果(!Errors.ContainsKey(键)) { 错误。添加(键、错误消息); } } 公共bool是有效的() { 如果(Errors.Count>0) { 返回false; } 返回true; } 公共字典错误{get;private set;} 公共T响应{get;set;} 公共响应数据库状态{get;set;} } 绑定(typeof(IResponseResult))到(typeof(ResponseResult));
您并没有真正为服务提供“构造泛型类型”。

Ninject inside实际上试图创建一个,但期望的是
泛型参数
,而您没有

Type.MakeGenericType(service.GetGenericArguments())  
我不知道你在想什么——以及如何解决这样的问题


您可以尝试
ToProvider
或设置提供程序,但仍然缺少一些内容。

IResponseResult没有泛型类型参数。但是ResponseResult确实有,并且您没有指定要将其绑定到哪个。