我在测试项目来测试安装Ninject(v4.0.30319)封装。 创建测试代码下面,不幸ValidateAbuse.Instance.Repository总是空。 为什么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();
}