ChainRunner를 사용하여 C#에서 책임/명령 체인 구현
단계는 그렇게 복잡하지 않으며 순차적으로 실행되어야 합니다. 이 단계를 구현하기 위해 chain of responsibility pattern으로 이동하기로 결정했습니다. 하지만 이 패턴을 구현하기 위한 간단하고 적절한 라이브러리를 찾을 수 없었기 때문에 이 모든 작업을 수행하기 위해 ChainRunner이라는 라이브러리를 만들었습니다.
그림은 ChainRunner의 작동 방식을 보여줍니다.
구현
아래에서 ChainRunner를 사용하여 단계를 구현한 방법을 확인할 수 있습니다. 각 단계마다 담당 핸들러를 만들었습니다.
public class CensorCurseWordsHandler : IResponsibilityHandler<Comment>
{
public Task HandleAsync(Comment request, CancellationToken cancellationToken = default)
{
// process comment ...
}
}
public class ModifyIncorrectWordsHandler : IResponsibilityHandler<Comment>
{
public Task HandleAsync(Comment request, CancellationToken cancellationToken = default)
{
// process comment ...
}
}
public class ImproperToneHandler : IResponsibilityHandler<Comment>
{
public Task HandleAsync(Comment request, CancellationToken cancellationToken = default)
{
// process comment ...
}
}
그런 다음 Startup.cs(ASP.NET Core)에서 체인을 구성했습니다.
services.AddChain<Comment>()
.WithHandler<CensorCurseWordsHandler>()
.WithHandler<ModifyIncorrectWordsHandler>()
.WithHandler<ImproperToneHandler>();
마지막으로 클래스에 체인을 주입하고 다음과 같이 체인을 실행했습니다.
[ApiController]
[Route("[controller]")]
public class CommentController
{
private readonly IChain<Comment> _chain;
public CommentController(IChain<Comment> chain)
{
_chain = chain;
}
[HttpPost]
public async Task<IActionResult> Post(Comment comment)
{
await _chain.RunAsync(comment);
return Ok();
}
}
연결
Reference
이 문제에 관하여(ChainRunner를 사용하여 C#에서 책임/명령 체인 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/litenova/implement-chain-of-responsibility-commands-in-c-using-chainrunner-2420텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)