小编Oli*_*ver的帖子

Ninject:Generic类的默认和特定绑定

我有一个抽象类:

 public abstract class Validator<T> : IValidator
Run Code Online (Sandbox Code Playgroud)

以及为特定目的实现此类的几个类,例如

public sealed class NewsValidator : Validator<News>
Run Code Online (Sandbox Code Playgroud)

现在使用Ninject我想做如下的依赖注入(这个特定的代码不起作用):

Bind<Validator<News>>().To<NewsValidator>();
Bind(typeof(Validator<>)).To(typeof(NullValidator<>));
Run Code Online (Sandbox Code Playgroud)

所以我想要实现的是

Validator<News>
Run Code Online (Sandbox Code Playgroud)

应该绑定到类"NewsValidator",但如果要求此类的任何其他未绑定版本,请说

Validator<Article>
Validator<SomethingElse>
Run Code Online (Sandbox Code Playgroud)

应绑定到默认类(NullValidator).但是,使用上面使用的代码会抛出异常,因为它将Validator <News>绑定到NewsValidator以及NullValidator.

我怎么能实现这个?泛型类的特定类型应绑定到各个类.未明确绑定的所有其他类型的泛型类应绑定到默认类.

对于一些建议真的很高兴!谢谢!

c# ninject ninject-2 asp.net-mvc-3

6
推荐指数
1
解决办法
1106
查看次数

标签 统计

asp.net-mvc-3 ×1

c# ×1

ninject ×1

ninject-2 ×1