jmi*_*has 4 .net c# task-parallel-library tpl-dataflow
我是TPL数据流的新手,请原谅我,如果这是一个简单的问题.
我有一个输入缓冲区块,它采用基类.如何根据派生类型从那里分支到块?例如:
var inputBlock = new BufferBlock<EventBase>();
//if EventBase is Meeting then go to block X
//if EventBase is Appointment the go to block Y
Run Code Online (Sandbox Code Playgroud)
谢谢!
您可以向LinkTo方法发送谓词以区分项目.但是,您需要从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);
Run Code Online (Sandbox Code Playgroud)
但是,正如Servy指出的那样,你应该避免这种情况并设计你的类型以支持多态性.