내 응용 프로그램에서 여러 문자열을 대체 값 사전으로 조인하려고합니다.단일 결과를 다른 여러 결과와 결합하는 데이터 블록
readTemplateBlock
은 FileInfos와 함께 제공되고 그 내용을 문자열로 반환합니다.
getReplacersBlock
은 하나의 대체 단어 사전으로 피드됩니다 (한 번).
joinTemplateAndReplacersBlock
은 readTemplateBlock
의 각 항목에 하나의 getReplacersBlock
결과를 결합해야합니다.
제 현재의 설치에서 제가 게시하는 각 파일에 대해 동일한 대체 자 사전을 다시 게시해야합니다.
// Build
var readTemplateBlock = new TransformBlock<FileInfo, string>(file => File.ReadAllText(file.FullName));
var getReplacersBlock = new WriteOnceBlock<IDictionary<string, string>>(null);
var joinTemplateAndReplacersBlock = new JoinBlock<string, IDictionary<string, string>>();
// Assemble
var propagateComplete = new DataflowLinkOptions {PropagateCompletion = true};
readTemplateBlock.LinkTo(joinTemplateAndReplacersBlock.Target1, propagateComplete);
getReplacersBlock.LinkTo(joinTemplateAndReplacersBlock.Target2, propagateComplete);
joinTemplateAndReplacersBlock.LinkTo(replaceTemplateBlock, propagateComplete);
// Post
foreach (var template in templateFilenames)
{
getFileBlock.Post(template);
}
getFileBlock.Complete();
getReplacersBlock.Post(replacers);
getReplacersBlock.Complete();
더 나은 블록이 있습니까? 어쩌면 제가 간과 한 구성 옵션일까요?
당신은을 사용하여 고려 가지고 현재의 코드를 가정
는이 같은 (C# 7을 사용하고 간결함을 위해
System.ValueTuple
패키지)를 찾습니다 'TaskCompletionSource' 대신'WriteOnceBlock'과'JoinBlock'을 사용합니까? – svick들어 본 적이 없습니다. 연구 –
당신은 정교하고 어쩌면 답변을 할 수 있습니까? –