Wir haben ein externes Projekt mit einer QCServiceLog-Klasse mit einer ILogging-Abhängigkeit, die von Unity aufgelöst wird. Aber QCServiceLog ist eine Singleton-Klasse, wie Sie im folgenden Beispiel sehen:Singleton-Klasse mit Abhängigkeitsinjektion C#
private readonly ILogging _logging = null;
private static QCServiceLog _instance = null;
public static QCServiceLog Instance
{
get
{
return _instance;
}
}
public QCServiceLog(ILogging logging)
{
_logging = logging;
if (_instance == null)
{
_instance = this;
}
}
Wir versuchen, es zu benutzen, und in unserer Lösung haben wir die Registrierung wie:
uc.RegisterType<ILogging, QCFileManager>(new ContainerControlledLifetimeManager());
Aber da QCServiceLog ist ein Singleton Wir glauben, dass der Code niemals durch den Konstruktor gelangt, dann wird _instance niemals instanziiert. Wir verwenden es dies zu tun:
QCServiceLog.Instance.Log(ex);
Ist das Singleton korrekt umgesetzt? Wir glauben, dass es nie einen neuen von QCServiceLog macht.
Was denkst du? Können wir etwas tun, ohne das externe Projekt zu ändern? Die Ausnahme, wie Sie sich vorstellen können, ist:
Objektverweis nicht auf eine Instanz eines Objekts festgelegt.
Ich würde wirklich Ihre Hilfe schätzen!