Ninjectを使用してリポジトリをプロパティにバインドしようとしていますが、バインディングオブジェクトの参照が常にnullになります。以下のコードを使用して問題を説明します。プロパティにバインドすると常にnullが返される
public interface IServiceRepository
{
User GetUser(string email);
IQueryable<Statistic> GetStatisticForCurrentMonth(string ip);
void InsertStatistic(ConversionModel conversionModel);
class ServiceRepository : IServiceRepository
{
//Implementation of the Interface
}
私はクラスが作成されている間class below
にbind the repository above
したいのです。残念ながらRepository
オブジェクトは常にnull
です。多分私はNinjectがどのように動作しているのか誤解していますか?どのように問題を解決するには?
public class Converter
{
[Inject]
public static IServiceRepository Repository { get; set; }
private static Converter _converter;
public static Converter Instance
{
get { return _Converter ?? (_Converter = new Converter());
}
}
Ninject活性化コード
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IServiceRepository>().ToMethod(context => Converter.Repository);
}
私はこの
public class Converter
{
private readonly IServiceRepository _repository;
public Converter(IServiceRepository repository)
{
_repository = repository;
}
//skip code
}
テストのようにコードを書き換えることを試みた
更新...
[TestMethod]
public void ConverterInstanceCreated()
{
using (IKernel kernel = new StandardKernel())
{
kernel.Bind<IServiceRepository>().To<ServiceRepository>();
Assert.IsNotNull(kernel.Get<Converter>());
}
}
は、私はちょうど失われた例外
Test method PC.Tests.NinjectTest.ConverterInstanceCreated threw exception:
Ninject.ActivationException: Error activating IServiceRepository
No matching bindings are available, and the type is not self-bindable.
Activation path:
2) Injection of dependency IServiceRepository into parameter repository of constructor of type Converter
1) Request for Converter
を与え、私はNinjectが任意の成功なしでおよそ一週間のために働いているかを理解しようとしています。私の場合、なぜこの例外がスローされますか?
また、シングルトンクラスに1つのリポジトリを注入して作業例を投稿してください。あなたがプロパティインジェクションを使用して、私はninjectはまだちょうどインタフェース
Iの避難所」にマッピングするために、具体的などのような種類を知る必要がありとして、それはまだ
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IServiceRepository>().To<ServiceRepository>();
}
だと思うの注射をコンストラクタされていなくても
私はコードでポストを更新しましたが、まだ動作しません:( – Tomas
無視してください、私は問題を解決しました – Tomas
@Tomasあなたのコードはまだあなたはあなたの質問投稿にフォローアップすべき質問を削除するつもりです –