私は抽象工場を持っています。今日は、ninject でバインドしたいと思いました。どれが一番いいのかわかりませんが、私はこの方法でやりました。それから私はプロバイダーの方法で試してみました。そのため、プロバイダー インターフェイスを実装しました。問題は、私がこのように呼び出すことです kernel.Bind<IModelValidator>().ToProvider<ModelValidatingFactory>()
ModelValidatingFactory の代わりに IModelValidatingFactory を使用できないため、ファクトリ (リスト) とは何かをパラメーターに指定する必要があります。IModelValidator インターフェイスのファクトリを作成したいと考えています。クラスタイプをキーとして使用したいと思います。コンストラクターにパラメーターを与えるにはどうすればよいですか、またはそれを機能させるための最良の方法はどれですか? タイプを使用する場合はそれを渡す必要があるため、キーには何を使用する必要がありますか。文字列をタイプとして使用するのは好きではありません
Ninjectのメソッドを見たの.ToFactory
ですが、よくわかりません。より多くの実装の可能性を見ました。あなたは私に何をアドバイスしますか?
// 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 メソッドをどのように使用すればよいですか?