sagen wir eine serverseitige App, die eine threadsichere Komponente ausgiebig nutzt. Anstatt jedes Mal, wenn es benötigt wird, eine neue Komponenteninstanz zu erstellen, verwende ich Autofac, um eine Singleton-Instanz dieser Komponente während des Systemstarts zu registrieren, zu verwalten und aufzulösen, wie beschrieben here.Wie verhält sich Autofac, wenn eine neue Komponenteninstanz programmgesteuert initialisiert wird, die als Singleton registriert wurde, bevor
Jetzt ist meine Frage: Was passiert, wenn trotz der Autofac-Registrierung eine neue Instanz dieser Komponente programmgesteuert (ComponentName c = new ComponentName();
) irgendwo im Quellcode initialisiert wird.
Hier meine Annahmen sind:
(Fall 1) Wenn die Initialisierung Anweisung Teil des Quellcodes ist, die für die die Autofac DI-Container Autofac die registriert definiert wurden den App Montag gehört, zurückgeben Singleton-Instanz der Komponente.
(Fall 2) Wenn die Initialisierungsanweisung zum Quellcode einer externen Drittanbieterbibliothek gehört, wird bei jeder Ausführung der Anweisung eine neue Instanz der Komponente erstellt. Autofac hat keine Rolle.
Sind meine Annahmen in die richtige Richtung oder bin ich völlig falsch?
Grüße, Matthias
Hallo Scott, danke für die Klarstellungen. Ich verstehe jetzt. –
Was ich daran mag, ist, dass wir den Vorteil haben, einen Singleton zu verwenden (indem wir eine einzelne Instanz verwenden, anstatt mehrere zu erstellen), ohne die Klasse als tatsächlichen Singleton schreiben zu müssen. –