我正在嘗試在干凈的架構中實作 CQRS 模式。
我知道如果是 commads/query,那么我需要在 applictionLayer 中添加一個名為 commads/query 的檔案夾。
現在我想創建一個 void 方法。不是命令或查詢它只是一個無效的方法。我想在我的查詢和命令中再次使用它。
public void FormatSomethingHtml(Something something)
{
something.FinePrint = _helper.FormatHtml(something.FinePrint, something.SiteCode.Name);
// removed rest
}
我不知道應該在哪里創建這個方法。
如果我在 commandHandler 中創建此方法,我將無法重用它。IE:
public class UpdateSomethingCommandHandler : IRequestHandler<UpdateSomethingCommand, Something>
{
// removed rest
public void FormatSomethingHtml(Something something)
{
something.FinePrint = _helper.FormatHtml(something.FinePrint, something.SiteCode.Name);
// removed rest
}
}
在上面的方法中,我可以在 UpdateSomethingCommandHandler 中使用。但我無法在另一個處理程式中重用它。IE。當我這樣打電話時,
new UpdateSomethingCommandHandler.FormatSomethingHtml(something);我得到了錯誤。
哪里可以創建通用方法?
uj5u.com熱心網友回復:
這應該是一個實用服務,并將其注入您需要的任何查詢/處理程式中。
前任:
public interface IFormatService
{
void FormatSomethingHtml(Something something)
}
public class HtmlFormatService: IFormatService
{
public void FormatSomethingHtml(Something something)
{
something.FinePrint = _helper.FormatHtml(something.FinePrint, something.SiteCode.Name);
// removed rest
}
}
在您的處理程式中,您將注入它并像任何其他服務一樣使用它
另外,我會考慮將回傳型別更改為Something,這樣您就可以更新物件并回傳ot,或者只是接受一個字串并回傳格式化的字串,如下所示:
public string FormatSomethingHtml(string something)
{
return _helper.FormatHtml(something.FinePrint, something.SiteCode.Name);
}
在您的處理程式/查詢中
var something = new Something();
something.Fingerprint = _formatter.FormatSomethingHtml(...)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/422425.html
標籤:
