gpt4 book ai didi

c# - 如何在 TPL 数据流中分支逻辑?

转载 作者:太空狗 更新时间:2023-10-30 00:40:39 26 4
gpt4 key购买 nike

我是 TPL 数据流的新手,如果这是一个简单的问题,请原谅我。

我有一个采用基类的输入缓冲 block 。我如何从那里分支到基于派生类型的 block ?例如:

var inputBlock = new BufferBlock<EventBase>();
//if EventBase is Meeting then go to block X
//if EventBase is Appointment the go to block Y

谢谢!

最佳答案

您可以将谓词发送到 LinkTo 方法以区分项目。但是,您需要从每个 block 内的 EventBase 向下转换以使用特定于该类型的逻辑:

var inputBlock = new BufferBlock<EventBase>();
var meetingBlock = new ActionBlock<EventBase>(
eventBase =>
{
var meeting = eventBase as Meeting;
//...
});
var appointmentBlock = new ActionBlock<EventBase>(
eventBase =>
{
var appointment = eventBase as Appointment;
//...
});

inputBlock.LinkTo(meetingBlock, eventBase => eventBase is Meeting);
inputBlock.LinkTo(appointmentBlock, eventBase => eventBase is Appointment);

但正如 Servy 指出的那样,您应该避免这种情况,并设计您的类型以支持多态性。

关于c# - 如何在 TPL 数据流中分支逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25626228/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com