Files
mROA/Example.Backend/PrinterFactory.cs
T

43 lines
1.1 KiB
C#

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