gpt4 book ai didi

c# - 这可以在 C# 中简化吗?

转载 作者:行者123 更新时间:2023-11-30 19:04:48 26 4
gpt4 key购买 nike

我有一些重复的代码,但不确定简化它的最佳方法。

private void CheckData(long PKID, int ExpectedResult, string Server)
{
var a = _ARepo.GetAll();
var b = _BRepo.GetAll();

if(Server == "A")
{
a.Find(x => x.PKID == PKID).Result.ShouldBe(ExpectedResultId);
}

if (Server == "B")
{
b.Find(x => x.PKID == PKID).Result.ShouldBe(ExpectedResultId);
}
}

这是一个单元测试项目,我正在使用 Shouldly 库。任何想法表示赞赏。

最佳答案

private void CheckData(long PKID, int ExpectedResult, string Server)
{
//Setting to empty because I don't know what happens if it is not "A" nor "B"
IEnumerable<YourType> data = Enumerable.Empty<YourType>();

if(Server == "A")
data = _ARepo.GetAll();
else if(Server == "B")
data = _BRepo.GetAll();

data.Find(Find(x => x.PKID == PKID).Result.ShouldBe(expectedId);
}

如果 Server 值只能是 AB 那么您可以用 if else 或更好的还是 ?: 运算符然后它看起来像:

var data = Server == "A" ? _ARepo.GetAll() : _BRepo.GetAll();
data.Find(Find(x => x.PKID == PKID).Result.ShouldBe(expectedId);

在两个 Repo 实现相同接口(interface)的情况下,更好的设计是将 IRepo 作为函数的参数。这样该函数只有 1 个角色 - 即检查数据(而不是决定要检查哪些数据)

关于c# - 这可以在 C# 中简化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39899251/

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