我想知道使用扩展方法来避免检查层次结构中的空值。这个例子:
// GetItems(), GetFirstOrDefault(), GetProduct(), GetIDProduct() are extension methods like:
public static SomeType GetSomeProperty( this XYZ obj ) {
if ( object.ReferenceEquals( obj, null ) ) { return default( SomeType ); }
return obj.SomeProperty;
}
// the code with extension methods
Guid? idProduct = this.Invoice.GetItems().GetFirstOrDefault().GetProduct().GetIDProduct();
// instead of
Guid? idProduct = null;
Invoice invoice = this.Invoce;
if ( null != invoice ) {
InvoiceItems items = invoice.Items;
if ( null != items && items.Count > 0 ) {
InvoiceItem item = items[0];
if ( null != item ) {
idProduct = item.IDProduct();
}
}
}
我知道,有可用的空对象模式,但这种类型的扩展方法的解决方案看起来更好。
你认为,这个解决方案是好是坏(因为坏/好的设计、清晰度,等等)?
请投票“好”或“坏”,你为什么这么认为。帖子被标记为社区。