問題を解決するために多くの検索を行いましたが、解決策はなく、DIとNinjectの新機能です。Ninject:ビジネスレイヤーでサービスを受けることができません
私の問題はWebUiレイヤでサービスを受けることができますが、私はビジネスレイヤでサービスを受けることができません。私は、ビジネス層にこのエラーが出ます
public IValidator<T> GetValidator<T>(T entity)
{
var d = kernel.Get<IValidator<T>>();
return d;
}
:
エラー活性化IValidator {形}一致するバインディングがありません
私のWebUIでこのコード作業が、それは私のビジネス層で作業をdoesntの利用可能なのは で、そのタイプは自己バインドできません。アクティブ化パス:1) IValidatorのリクエスト
提案:1) IValidator {Type}のバインディングを定義していることを確認してください。 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>();
[Asp.Net MVC&ウェブAPIを使用して設定Ninject]の可能な重複(http://stackoverflow.com/questions/16382982/configuring-ninject -with-asp-net-mvc-web-api) –
は動作しません。 – Mashtani
同じ 'Kernel'インスタンスを使用していますか?通常、AppDomainごとに1つのインスタンスしか持たないようにしてください。 – Steven