供应商通常给我庞大的、超大的代理类来传递信息。很多时候,为了获得消息的实际内容,我必须进入这样的属性:
var priceOfEggs = BeingItself.PossibleUniverses.Universe[0].Galaxies.Galaxy[0].Systems.System[0].[...].LocalEconomy[0].PriceOfEggs;
事实证明,这个 WCF 衍生品中的所有这些类都只有一个对象可以容纳任何东西(它会造成事物组织良好的错觉,你看)。
问题是这些类中的任何一个都可能包含空值,我得到一个异常。
这里的防御性编码是令人望而却步的。空值检查会导致代码嵌套很深。数组的坏处是数组的两倍,因为我必须检查 null 然后检查 count > 0。有时我必须遍历数组。
我可以尝试/捕捉,但是很难知道它在生产中的哪个地方击中了风扇,因为它不在我的调试器中。
有没有办法可以通过 Trace 显示哪个类为空?
有没有一种方法可以安全地取消对这个怪物的叶节点的引用,而不会造成软件冗长的丛林?
编辑:感谢把链接放在上面的人!这基本上是我通过谷歌搜索找不到的问题。