使用生产中的Fluent断言增强默认的.NET LINQ可怜的异常吗?

问题描述 投票:-1回答:1

当标准.NET异常对于stacktrace或诸如此类的额外信息几乎没有意义时,我的问题标题带来了一般性问题>

序列包含多个匹配元素

我太懒了,每次在Single之前都不能编写if-else语句,这就是为什么一段时间前我开始在代码中使用这种资产(例如FluentAsserts中的结构)的原因

var singleItem = itemCollection
  .Where(i => i.Id = id)
  .ToArray()
  .ThrowIfEmpty<Item>(searchCriteria: id))
  .ThrowIfMoreThanOne<Item>(searchCriteria: id, dumpItems: true))
  .Single();

因此,在执行Single之前,代码将失败,并带有更详细的异常,甚至在异常中包含项目。我不想为此发明轮子,而是想使用一些准备生产的Assertion库,这样我可以编写更具可读性的代码,例如

var singleItem = itemCollection
  .Where(i => i.Id = id)
  .ToArray()
  .Should().BeNotEmpty().And().HasMoreThanOneElement().For(searchCriteria: id)
  //.Otherwise().Throw<MyCustomException>("maybe with some custom message")
  .Single();

像FluentAssertions一样,但是该库是为测试而不是为生产而开发的。

对现成的解决方案有何建议?

也许相关的问题:Should FluentAssertions be used in production code?SingleOrDefault exception handling

[我的问题标题带来了一般性的问题,当标准.NET异常对于堆栈跟踪或其他无意义的信息(如Sequence也包含多个匹配元素,我也是...

c# .net exception fluent-assertions
1个回答
0
投票

[由于我没有设法在互联网上找到东西,并从人们那里得到了一些解决方案,所以我受FluentAsserts的启发发明了我的“轮子”。

© www.soinside.com 2019 - 2024. All rights reserved.