How/where 在 CQRS 模式中创建一个 void 方法
How/where to create a void method in CQRS pattern
我正在尝试在干净的架构中实现 CQRS 模式。
我知道如果 commads/query 那么我需要在 applictionLayer 中添加一个名为 commads/query 的文件夹。
现在我想创建一个 void 方法。不是命令或查询,它只是一个无效的方法。我想在我的查询和命令中再次使用它。
public void FormatSomethingHtml(Something something)
{
something.FinePrint = _helper.FormatHtml(something.FinePrint, something.SiteCode.Name);
// removed rest
}
我不知道应该在哪里创建这个方法。
如果我在 commandHandler 中创建这个方法,我就不能重用它。
即:
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);
我出错了。
哪里可以创建通用方法?
这应该是一个实用程序服务,并将其注入到您需要的任何 query/handler 中。
例如:
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
}
}
在您的处理程序中,您可以将其注入并像使用任何其他服务一样使用它
此外,我会考虑将 return 类型更改为 Something,以便您可以更新对象和 return ot 或简单地接受字符串和 return 格式化字符串,如下所示:
public string FormatSomethingHtml(string something)
{
return _helper.FormatHtml(something.FinePrint, something.SiteCode.Name);
}
在你的handler/query
var something = new Something();
something.Fingerprint = _formatter.FormatSomethingHtml(...)
我正在尝试在干净的架构中实现 CQRS 模式。
我知道如果 commads/query 那么我需要在 applictionLayer 中添加一个名为 commads/query 的文件夹。
现在我想创建一个 void 方法。不是命令或查询,它只是一个无效的方法。我想在我的查询和命令中再次使用它。
public void FormatSomethingHtml(Something something)
{
something.FinePrint = _helper.FormatHtml(something.FinePrint, something.SiteCode.Name);
// removed rest
}
我不知道应该在哪里创建这个方法。
如果我在 commandHandler 中创建这个方法,我就不能重用它。 即:
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);
我出错了。
哪里可以创建通用方法?
这应该是一个实用程序服务,并将其注入到您需要的任何 query/handler 中。
例如:
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
}
}
在您的处理程序中,您可以将其注入并像使用任何其他服务一样使用它
此外,我会考虑将 return 类型更改为 Something,以便您可以更新对象和 return ot 或简单地接受字符串和 return 格式化字符串,如下所示:
public string FormatSomethingHtml(string something)
{
return _helper.FormatHtml(something.FinePrint, something.SiteCode.Name);
}
在你的handler/query
var something = new Something();
something.Fingerprint = _formatter.FormatSomethingHtml(...)