Ich teste Ninject und versuchen zu verstehen, wie Repository zu Singleton-Klasse injizieren. Im Folgenden arbeitet Repository und Singletonklasse Beispiel ...Get Singleton Instanz
public interface ITestRepository
{
void TestRepositoryMethod();
}
public class TestRepository:ITestRepository
{
public void TestRepositoryMethod()
{
}
}
public class TestSingletonInjectionClass
{
private readonly ITestRepository _repository;
public TestSingletonInjectionClass(
ITestRepository repository)
{
_repository = repository;
}
public void TestMethod()
{
}
}
Das Testverfahren, das
[TestMethod]
public void SimpleTestSingleton()
{
using (IKernel kernel = new StandardKernel())
{
kernel.Bind<ITestRepository>().To<TestRepository>();
var testSingletonInjectionClass =
kernel.Get<TestSingletonInjectionClass>();\
Assert.IsNotNull(testSingletonInjectionClass);
}
}
sucesfully gebe ich zwei Fragen
1. Ist das richtige Methode zu erhalten Singleton-Klasseninstanz?
kernel.Get<TestSingletonInjectionClass>()
2. Wie von App-Code Singleton-Instanz der Klasse erhalten. In der Testmethode erstelle ich Ninject Kernel und greife auf Methode Get. Wie kann man auf den Formularcode des ninject-Kernels zugreifen?
Könnten Sie bitte Code, wie Instanz der Klasse im Konstruktor erhalten? Vielen Dank für Ihre Hilfe. – Tomas
Fügen Sie es einfach als Konstruktorparameter hinzu. –
Das eine Problem, das ich mit dieser Implementierung erfüllt, ist, dass, wenn ich einen solchen Konstruktor in der abstrakten Klasse hinzufüge, die abgeleiteten Klassen auch den gleichen Konstruktor benötigen und manchmal bringt dies Probleme mit sich. – Tomas