Injektion in die Konsole-Anwendung mit der Einfachen Injektor
Ich bin mit Einfach Injektor für test-Zwecke aber prety neu auf der OOP. Ich bin versucht zu erstellen loosly paar Klassen. Hier ist mein Szenario.
Habe ich User repo-Schnittstelle wie diese.
public class UserRepository:IUserRepository
{
public void Add(Model.User user)
{
Console.WriteLine("Name:"+user.Name+"\n"+"SurName:"+user.SureName);
}
public void Delete(int id)
{
throw new NotImplementedException();
}
}
public interface IUserRepository
{
void Add(User user);
void Delete(int id);
}
Meine TestInjectedClass
- Klassen und-Schnittstellen so etwas wie das, was ich bin planng zu verwenden, im Programm Main.
public class TestInjectedClass:ITestInjectedClass
{
private readonly IUserRepository _userRepository;
public TestInjectedClass(IUserRepository userRepository)
{
_userRepository = userRepository;
}
public void UserRepoRun()
{
var user = new User() {Id = 1,Name = "ada",SureName = "stack"};
_userRepository.Add(user);
}
}
public interface ITestInjectedClass
{
void UserRepoRun();
}
Und Meine Konsole Programm sieht wie folgt aus:
class Program
{
static ITestInjectedClass _testInjectedClass;
private static IUserRepository _userRepository;
static void Main(string[] args)
{
_testInjectedClass= new TestInjectedClass(_userRepository);
_testInjectedClass.UserRepoRun();
Console.ReadLine();
}
public Program()
{
Bootstrap.Start();
}
}
BootStrap-Klasse hier:
class Bootstrap
{
public static void Start()
{
var container = new Container();
//Register your types, for instance:
container.Register<IUserRepository, UserRepository>(Lifestyle.Singleton);
container.Register<ITestInjectedClass, TestInjectedClass>(Lifestyle.Singleton);
//container.Register<IUserRepository, TestInjectedClass>(Lifestyle.Singleton);
//container.Register<IUserContext, WinFormsUserContext>();
container.Register<TestInjectedClass>();
//Optionally verify the container.
container.Verify();
}
}
Mein problem wenn ich ausführen-Programm,ich bin immer Wert Ausnahme auf die _userRepository
innen TestInjectionClass
.
Wie kann man richtig injiziert TestInjectionClass
und UserRepository
zum Haupt-Programm. Dank
so wie ich das beheben kann .thankx
sollte ich mich registrieren alle Abhängigkeiten vor th e run Programm
sollte ich mich registrieren alle Abhängigkeiten vor th e run Programm
InformationsquelleAutor stackada | 2015-08-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie
Bootstrap.container
erhältlich inProgram.Main
und verwenden Sie zum erstellen von Instanzen von Klassen, anstatt direkt den Aufruf Ihrer Konstruktoren direkt:Natürlich müssen Sie setzen es in
Bootstrap
für diese Arbeit:- Und call -
Bootstrap.Start
ausProgram.Main
:InformationsquelleAutor Damir Arh
Das problem ist da, den Sie anrufen, Ihre
Bootstrap
code inProgram
Klasse-Instanz-Konstruktor.Also, eigentlich, wenn Sie Ihr Programm starten, die die Ausführungsumgebung, ruft Eintrag-Punkt-Methode
Main
. Und Ihre Instanz-Konstruktor wird nie aufgerufen.Versuchen, Ihre Eingabe zu ändern-Punkt-Methode
Main
und "Bootstrap" - Klasse-code:Du hast Recht, Danke, @Steven
InformationsquelleAutor Arkadiusz K
Nutzen Sie bitte SimpleInjector
Probe entnehmen Sie bitte
http://www.c-sharpcorner.com/UploadFile/4d9083/dependency-injection-using-simple-injector/
InformationsquelleAutor Prakash Rajendran