我有一个抽象工厂。今天想用ninject绑定它。我不知道哪个是最好的方法,但我是这样做的。然后我强硬地尝试了提供者的方式。所以我实现了提供者接口。问题是,我这样打电话 kernel.Bind<IModelValidator>().ToProvider<ModelValidatingFactory>()
我不能使用 ModelValidatingFactory 的 IModelValidatingFactory,所以我必须给出一个参数是什么工厂(列表)。我想为 IModelValidator 接口创建一个工厂。我想使用类类型作为键。我怎样才能为构造函数提供一个参数,或者哪个是使它工作的最佳方法?我应该使用什么作为键,因为如果我使用类型我必须通过它,我不喜欢使用字符串作为类型
我看了.ToFactory
Ninject的方法,但我不明白。我看到了更多的实施可能性。你有什么建议?
// this is what I would like to try, but there are some error with this. I can not reference to the type, and I can not give factory
public class ModelValidatingFactory : Provider<IModelValidator>, TandoCare.Desktop.Infrastructure.ModelValidating.IModelValidatingFactory
{
public IDictionary<Type, Func<IModelValidator>> validationFactory = new Dictionary<Type, Func<IModelValidator>>();
public ModelValidatingFactory(IDictionary<Type, Func<IModelValidator>> factory)
{
//validationFactory.Add(typeof(PatientModel), () => new PatientRegistrationValidator());
validationFactory = factory;
}
protected override IModelValidator CreateInstance(Ninject.Activation.IContext context)
{
return validationFactory[context.Request.Target.Type]();
}
public IModelValidator GetValidator(object model)
{
Type type = model.GetType();
return validationFactory[type]();
}
public IModelValidator this[object lookedType]
{
get
{
Type type = lookedType.GetType();
return validationFactory[type]();
}
}
}
我应该如何以这种方式使用 .ToFactory 方法?