Module.cs 590 B

123456789101112131415161718192021222324252627
  1. namespace Day20;
  2. public abstract class Module
  3. {
  4. public string Name { get; }
  5. protected readonly List<Module> _outputs = new List<Module>();
  6. protected readonly List<Module> _inputs = new List<Module>();
  7. protected Module(string name)
  8. {
  9. Name = name;
  10. }
  11. public abstract string GetState();
  12. public abstract IEnumerable<Pulse> Process(Pulse p);
  13. public void AddOutput(Module destination)
  14. {
  15. _outputs.Add(destination);
  16. }
  17. public void AddInput(Module source)
  18. {
  19. _inputs.Add(source);
  20. }
  21. }