テストするテストプロジェクトにNinject(v4.0.30319)パッケージをインストールしました。以下にテストコードを作成します。残念ながら、ValidateAbuse.Instance.Repositoryは常にNullです。NinjectがリポジトリをValidateAbuse.Repositoryプロパティにバインドしないのはなぜですか?コンストラクターバインディングの使用を提案する人もいるかもしれませんが、コード構造のために使用できません。以下のコードは単なる例であり、プロパティにバインドする方法を見つける必要があります。
常に失敗する試験方法
[TestMethod]
public void PropertyInjection()
{
using (IKernel kernel = new StandardKernel())
{
kernel.Bind<ISettingsRepository>().To<SettingsRepository>();
Assert.IsNotNull(ValidateAbuse.Instance.Repository);
}
}
リポジトリインターフェース
public interface ISettingsRepository
{
List<string> GetIpAbuseList();
List<string> GetSourceAbuseList();
}
リポジトリの実装
public class SettingsRepository : ISettingsRepository
{
public List<string> GetIpAbuseList()
{
return DataAccess.Instance.Abuses.Where(p => p.TypeId == 1).Select(p => p.Source).ToList();
}
public List<string> GetSourceAbuseList()
{
return DataAccess.Instance.Abuses.Where(p => p.TypeId == 2).Select(p => p.Source).ToList();
}
}
リポジトリをバインドしようとしているクラス
public class ValidateAbuse
{
[Inject]
public ISettingsRepository Repository { get; set; }
public static ValidateAbuse Instance = new ValidateAbuse();
}