using CommunityToolkit.Mvvm.Messaging; namespace Toolkit.Foundation; public class SerialContext(IMessenger messenger, ISerialConnection connection, ISerialStreamer serialStreamer) : ISerialContext where TSerialReader : SerialReader { public async void Open() { if (connection.Open()) { Stream stream = serialStreamer.Create(); if ((TSerialReader?)Activator.CreateInstance(typeof(TSerialReader), [stream]) is TSerialReader reader) { await foreach (TContent content in reader.ReadAsync()) { messenger.Send(SerialResponse.Create(this, content)); } } } } }