gpt4 book ai didi

c# - 在 using 语句中使用条件逻辑可以吗

转载 作者:太空宇宙 更新时间:2023-11-03 19:05:37 24 4
gpt4 key购买 nike

好的,假设我需要处理一个订单。我们过去总是只有一种订单,订单。由于一些奇怪的情况,我们不得不自己制作注入(inject)器,目前正在使用它:

using(DependencyInjector.Inject()
.ForType<Order>()
.ImplementedBy<InsideOrderProcessor>())
{ ... };

现在我们有一个新的订单类型或订单,需要在处理上有细微的差别。但它仍然是 Order 类型,不能是其他类型。可以做这样的事情吗:

using( isInsideOrder
? DependencyInjector.Inject()
.ForType<Order>()
.ImplementedyBy<InsideOrderProcessor>()
: DependencyInjector.Inject()
.ForType<Order>()
.ImplementedBy<OutisdeOrderProcessor>())
{ ... };

这会起作用吗?如果可以,可以吗?

最佳答案

从代码可以编译的意义上说,没问题,但可读性不是特别好。为了编写易于维护的代码,我建议将其重构为一个单独的方法。它应该看起来像这样:

IOrderProcessor GetOrderProcessor(bool isInsideOrder) 
{
if (isInsideOrder)
{
return DependencyInjector.Inject()
.ForType<Order>()
.ImplementedyBy<InsideOrderProcessor>();
}
else
{
return DependencyInjector.Inject()
.ForType<Order>()
.ImplementedBy<OutisdeOrderProcessor>();
}
}

然后你可以这样写你的using:

using(this.GetOrderProcessor(isInsideOrder))
{
...
}

关于c# - 在 using 语句中使用条件逻辑可以吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28218860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com