我经常搜索以解决问题,但没有解决方案,我是DI和Ninject的新手。
我的问题是我可以在WebUi层获得我的服务,但我无法在业务层获得我的服务。
此代码在我的WebUi中工作,但它在我的业务层中不起作用:
public IValidator<T> GetValidator<T>(T entity)
{
var d = kernel.Get<IValidator<T>>();
return d;
}
我在业务层中收到此错误:
激活IValidator时出错{Type}没有匹配的绑定可用, 并且类型不可自我绑定。激活路径:1)请求 IValidator {类型}
建议:1)确保您已为其定义了绑定 IValidator {类型}。 2)如果在模块中定义了绑定,请确保 该模块已加载到内核中。 3)确保你有 不小心创建了多个内核。 4)如果你正在使用 构造函数参数,确保参数名称匹配 构造函数参数名称。 5)如果您使用的是自动模块 加载,确保搜索路径和过滤器正确无误。
这是我的代码:
我的界面:
public interface IValidationService
{
ValidationState Validate<T>(T model);
}
我的具体课程:
public class ValidationService : IValidationService
{
private readonly IKernel kernel;
public ValidationService(IKernel kernel)
{
this.kernel = kernel;
}
public ValidationState Validate<T>(T model)
{
var validator = kernel.Get<IValidator<T>>();
if (validator == null) // or just return null?
throw new Exception(string.Format("No validator found for type ({0})", model.GetType()));
return validator.Validate(model);
}
}
和我的约束力:
kernel.Bind<IValidationService>().To<ValidationService>();
答案 0 :(得分:1)
经过长时间的检查,我遇到了问题。
我做到了这一点,我的问题消失了:
false