答案 0 :(得分:2)
创建BroadcastBlock<T>
时,您可以定义克隆功能,因此完全负责其工作原理。如果你想通过引用传递,那么不要在克隆函数中对你的对象做任何事情:
new BroadcastBlock<T>(x => x, options)
如果你想要深层复印,你必须自己做。 BroadcastBlock
对它正在处理的数据一无所知。它只知道它在完整时会丢弃消息,并在向管道传递数据时调用 你的 函数。
此外,BroadcastBlock
允许您为cloningFunction
传递null,这有效地让您无需操作即可传递数据。
private TOutput CloneItem(TOutput item)
{
return _cloningFunction != null ?
_cloningFunction(item) :
item;
}
<强> Source 强>
<强> Example 强>