【问题标题】:Ninject: How to bind an open generic with more than one type argument?Ninject:如何绑定具有多个类型参数的开放泛型?
【发布时间】:2011-10-08 03:11:07
【问题描述】:

我正在使用 Ninject 2.2,并且我正在尝试为一个开放的泛型设置一个绑定,该泛型采用两个类型参数。根据qes的answer,将IRepository<T>绑定到Repository<T>的正确语法是这样的:

Bind(typeof(IRepository<>)).To(typeof(Repository<>));

如果IRepository 只接受一个类型参数,则上述语法完美运行,但如果需要更多则中断(给出Using the generic type 'Repository&lt;T,U&gt;' requires 2 type arguments 编译时错误。)

如何将IRepository&lt;T,U&gt; 绑定到Repository&lt;T,U&gt;

谢谢。

【问题讨论】:

    标签: c# ninject-2


    【解决方案1】:
    Bind(typeof(IRepository<,>)).To(typeof(Repository<,>));
    

    试试看……

    【讨论】:

    • 太棒了!我自己永远也想不通。非常感谢!
    • 我的英雄!一旦您弄清楚要向 Google 询问什么,这就是如此简单!
    • 你统治!以前从未见过这种语法。当我幸运地点击这篇文章时,正准备用不必要的泛型类型破坏我的代码
    • 你也可以从单一类型转到双重类型,即Bind(typeof(IRepo&lt;&gt;)).To(typeof(Repo&lt;,&gt;));
    • 实际上,当我尝试从单类型参数绑定到双类型参数时,我得到一些“提供的泛型参数的数量不等于泛型类型定义的数量。”异常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 2018-05-15
    相关资源
    最近更新 更多