我想使用Ninject綁定存儲庫到屬性,但總是得到綁定對象的空引用。我將使用下面的代碼來解釋這個問題。綁定到屬性總是返回null
public interface IServiceRepository
{
User GetUser(string email);
IQueryable<Statistic> GetStatisticForCurrentMonth(string ip);
void InsertStatistic(ConversionModel conversionModel);
class ServiceRepository : IServiceRepository
{
//Implementation of the Interface
}
我同時創建該類想bind the repository above
到class below
。不幸的是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是如何工作了一週沒有任何成功。在我的情況下,爲什麼拋出這個異常?
也請有人發表一個存儲庫注入到單身類的工作示例。
我已經更新的代碼後,我仍然無法得到它的工作:( – Tomas 2012-04-12 08:19:05
請無視,我已經解決了這個問題 – Tomas 2012-04-12 08:31:26
@Tomas您的代碼仍然顯示靜態的 - 除非你會刪除你應該在你的問題後續問題 – 2012-04-12 08:35:00