Ich habe eine .NET Core (UWP Lösung) Anwendung, die 3 verschiedene Projekte hat (nennen wir sie A, B und C).Wie kommuniziert man über Projekte innerhalb einer .NET-Lösung?
A und B sind Windows-Laufzeitkomponenten und C ist eine einfache Klassenbibliothek.
Projekte A und B haben einen Verweis auf das Projekt C.
Ich mag würde eine Klasse des Projekt C zuzugreifen, die die Instanz würde
Ich dachte, zwischen den Projekten A und B geteilt werden zu einem Singleton-Muster (natürlich), mit der Lazy-Methode von .NET 4
Problem ist, dass die Instanz nicht jedes Mal die gleiche ist, wenn A und B Projekte auf die Instanz zugreifen. Die Lazy-Methode erstellt eine neue Instanz der Klasse, da sie anscheinend nicht zuvor erstellt wurde. Ich frage mich, ob ich ein Singleton zwischen verschiedenen Projekten einer Lösung teilen kann. Ich habe gelesen, dass ein Projekt einem Prozess zugeordnet ist und jeder Prozess seinen eigenen Speicherplatz hat, der nicht geteilt werden kann. Gibt es eine Lösung für mein Problem?
EDIT: Hier ist meine Umsetzung meiner HubService Klasse:
private static readonly Lazy<HubService> Lazy =
new Lazy<HubService>(() => new HubService(), LazyThreadSafetyMode.ExecutionAndPublication);
private HubService()
{
_asyncQueue = new AsyncQueue<Guid>();
}
public static HubService Instance => Lazy.Value;
Auch ist es möglich, einen Singleton in verschiedenen Baugruppen zu teilen Tools wie Schloss Windsor, Ninject, Autofac oder Unity verwenden?
Wir müssen Ihre Implementierung des Singleton sehen, sowie die Art, wie Sie es in A und B verwenden. – Glubus
Es ist nicht die gleiche Instanz, also können Sie nicht. Ihre Projekt-C-Assembly wird separat in A und B geladen und teilt den Speicher nicht nur auf magische Weise zwischen zwei Prozessen. – LibertyLocked
Führen Sie eine statische versiegelte Singleton-Implementierung Ihrer Klasseninitialisierung durch. Dies verhindert, dass mehrere Threads auf Ihre verzögerte Initialisierung zugreifen. – Maertin