gpt4 book ai didi

c# - 控制方法返回的最佳模式

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

是否有改进此方法并减少重复 if 的模式或最佳选择?

我已经使用适配器模式将接口(interface)转换为另一个接口(interface)。

public string GetInvoice(int id)
{
// Search in Mongodb and get the object
var invoice = MongoRepository.Get<IInvoiceEntity>(x => x.Invoice.Id == id)
.First();

if (invoice == null)
{
// Search in SQL
invoice = EFRepository.Get<IInvoiceEntity>(x => x.Invoice.Id == id)
.First();
}

if (invoice == null)
{
// This invoice is an old system item
var oldInvoice = WCFClient.InvoiceService.Get(id);

var adapter = new OldInvoiceAdapter(oldInvoice);
invoice = adapter.AdaptEntity();
}

return invoce.ToJson();
}

谢谢!

最佳答案

我将提取出将发票放入方法中的各种策略(这消除了您对大部分评论的需要),然后简化此方法,如下所示:

var invoice = GetInvoiceFromMongoDb(id) 
?? GetInvoiceFromSql(id)
?? GetOldSystemInvoice(id);

return invoce.ToJson();

这使您的方法非常容易理解,并将您的代码分解为模块,这可能会帮助您更好地遵循单一职责原则。

关于c# - 控制方法返回的最佳模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24828823/

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