Я хочу использовать Reactive Extensions для преобразования некоторых сообщений и ретрансляции их после небольшой задержки.
Сообщения выглядят примерно так:
class InMsg
{
int GroupId { get; set; }
int Delay { get; set; }
string Content { get; set; }
}
Результат выглядит примерно так:
class OutMsg
{
int GroupId { get; set; }
string Content { get; set; }
OutMsg(InMsg in)
{
GroupId = in.GroupId;
Content = Transform(in.Content); // function omitted
}
}
Есть пара требований:
Учитывая Observable
IObservable<InMsg> inMsgs = ...;
void Send(OutMsg o)
{
... // publishes transformed messages
}
Я понимаю, что могу использовать Select для выполнения преобразования.
void SetUp()
{
inMsgs.Select(i => new OutMsg(i)).Subscribe(Send);
}