我希望Ninject为实现通用接口的特定程序集中的所有类型创建Bindings,而不是在运行时全部指定它们.有点像开放式仿制药在Autofac中的运作方式.
这就是我想出来的......
kernel.Bind(x => x.FromThisAssembly()
    .SelectAllClasses()
    .Where(t => t.IsAssignableFrom(
        typeof(ICommandHandler<>)))
        .BindAllInterfaces());
调用下面的方法,我希望实现所有类型的数组,ICommandHandler<T>但它不产生任何...
public void Process<TCommand>(TCommand command) 
    where TCommand : ICommand
{
    var handlers = 
        _kernel.GetAll<ICommandHandler<TCommand>>();
    foreach(var handler in handlers)
    {
        handler.Handle(command);
    }
}
有没有现成的方法来实现这一目标?或者我是否需要使用convention API自行推送?
这似乎是一种相当普遍的模式,并且想知道如果不编写自己的实现就可以实现这一点.
我正在使用NinjectDI容器.我有两个
public interface IRepository<T> where T : AbstractEntity<T>, IAggregateRoot
{ 
    // methods signatures
}
public class Repository<T> : IRepository<T> where T : AbstractEntity<T>, IAggregateRoot
{
    // implementations
} 
然后我试图将它们绑定在一个单独的模块中
public class DataAccessModule : Ninject.Modules.NinjectModule
{
    public override void Load()
    {
        this.Bind<IRepository<>>().To<Repository<>>();
    }
}
哪里this.Bind<IRepository<>>().To<Repository<>>();不被承认为陈述.
如何进行绑定?
我有三个通用接口
public interface IRepositorioBase<T> where T : class {    }
public interface IServiceBase<T> where T : class {}
public interface IAppBase<T> where T : class {}
我有三个相应的具体泛型类实现
public class RepositorioBase<T> where T : class {    }
public class ServiceBase<T> where T : class {}
public class AppBase<T> where T : class {}
而另一个类是使用类泛型创建的,例如
public class ExpenseCardRepository : RepositoryBase<ExpenseCard>, IExpenseCardRepository{ }
public class ExpenseCardService : ServiceBase<ExpenseCard>, IExpenseCardService
{
    private readonly IExpenseCardRepository _repository;
    public ExpenseCardService(IExpenseCardRepository repository) : base(repository)
    {
        _repository = repository; …