using Example.Backend; using Example.Shared; using mROA.Implementation; using mROA.Implementation.Attributes; namespace Example.Backend; [SharedObjectSingleton] public class PrinterFactory : IPrinterFactory { private List _printers = new(); public SharedObject Create(string printerName) { Console.WriteLine("Creating printer"); return new Printer { Name = printerName }; } public void Register(SharedObject printer) { Console.WriteLine("Registered printer"); _printers.Add(printer.Value); } public SharedObject GetPrinterByName(string printerName) { Console.WriteLine("Getting printer"); return new SharedObject(_printers.Find(i => i.GetName() == printerName)!); } public string[] CollectAllNames() { Console.WriteLine("Collecting all printers"); return _printers.Select(i => i.GetName()).ToArray(); } }