Ich versuche, ein Repository mit Ninject an die Eigenschaft zu binden, bekomme aber immer den NULL-Verweis des Bindungsobjekts. Ich werde das Problem mit dem unten stehenden Code erklären.Bindung an Eigenschaft immer Null zurückgeben
public interface IServiceRepository
{
User GetUser(string email);
IQueryable<Statistic> GetStatisticForCurrentMonth(string ip);
void InsertStatistic(ConversionModel conversionModel);
class ServiceRepository : IServiceRepository
{
//Implementation of the Interface
}
Ich bin möchte bind the repository above
zu class below
während die Klasse erstellt wird. Leider Repository
Objekt ist immer null
. Vielleicht habe ich missverstanden, wie Ninject funktioniert? Wie löst man das Problem?
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 Aktivator Code
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IServiceRepository>().ToMethod(context => Converter.Repository);
}
aktualisieren
Ich habe versucht, Code neu zu schreiben wie diese
public class Converter
{
private readonly IServiceRepository _repository;
public Converter(IServiceRepository repository)
{
_repository = repository;
}
//skip code
}
Der Test ...
[TestMethod]
public void ConverterInstanceCreated()
{
using (IKernel kernel = new StandardKernel())
{
kernel.Bind<IServiceRepository>().To<ServiceRepository>();
Assert.IsNotNull(kernel.Get<Converter>());
}
}
Ausnahme
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
gibt, gebe ich nur verloren, ich versuche zu verstehen, wie Ninject für ohne Erfolg über Woche arbeitet. Warum wird diese Ausnahme ausgelöst?
Auch bitte jemand post Arbeit Beispiel mit einer Repository-Injektion in Singleton-Klasse.
ich die Post mit dem Code aktualisiert haben, ich kann es immer noch nicht haben :( – Tomas
Bitte ignorieren, ich das Problem gelöst bekommen arbeiten – Tomas
@Tomas Ihr Code zeigt noch eine statische -. Es sei denn, Sie werden die Frage löschen, die Sie in Ihrer Frage verfolgen sollten –