Я занимаюсь самообучением TPL-Dataflow, и я читал, что использование неизменяемых объектов для сообщений - это путь.
Чтобы соответствовать этому, я разработал специальные классы для каждого входа и выхода блока.
К сожалению, когда я связываю свои блоки друг с другом, потому что типы ввода и вывода блоков очень разные, это приводит к размножению TransformBlock
:
var proc1 = new TransformBlock<proc1In,proc1Out>(...
var convertOut1toIn2 = new TransformBlock<proc1Out,proc2In>(p1 => new proc2In { ...
var proc2 = TransformBlock<proc2In,proc2Out>(...
proc1.LinkTo(convertOut1ToIn2);
convertOut1ToIn2.LinkTo(proc2);
Использование блоков Batch и Join позже для объединения результатов заставляет меня бороться с очень грязным кодом.
Во всех примерах, которые я читал в Интернете, используются простые типы, такие как int
, string
... Я не нашел ничего, что имело бы дело с немного более сложными типами.
Я чувствую желание использовать один большой объект и передать его ссылку через все блоки. Прежде чем совершить эту ошибку, я хотел бы знать, есть ли лучший способ сделать это.