Я пытаюсь привязать репозиторий к свойству с помощью Ninject, но всегда получаю нулевую ссылку на объект привязки. Я объясню проблему, используя код ниже.
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 ());
}
}
Нинжект код активации
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 работает около недели без каких-либо успехов. В моем случае почему выбрасывается это исключение?
Также, пожалуйста, кто-нибудь опубликуйте рабочий пример с одной инъекцией репозитория в одноэлементный класс.