我不知道:
但我认为意图非常明显。
public static class DebugLogic
{
public static bool ThrowIfNull = false;
public static T OrNew<T>(this T obj) where T : class
{
if (obj != null) return obj;
else if (ThrowIfNull) throw new ArgumentNullException(//to do...);
else return Activator.CreateInstance<T>();
}
}
预期用途:
var customer = order.Sale.OrNew().Customer.OrNew().Name
我在做什么?这是疯了还是有帮助的? 似乎很有帮助。
答案 0 :(得分:6)
我认为使用OrNew
方法的想法很好。特别是如果你正在努力建立一个流畅的界面。但是我会改变它的3件事
ThrowIfNull
)。这使得某人无法阅读OrNew
电话,了解它的作用。 new
约束支持较不安全的Activator.CreateInstance<T>()
电话DebugLogic
以外的其他内容。通常(但不总是)扩展方法容器以Extensions
结尾。 例如
public static class LogicExtensions {
public static T OrNew<T>(this T obj) where T : class, new() {
if (obj != null) {
return obj;
}
return new T();
}
}
答案 1 :(得分:0)
此操作的名称显然是:DefaultIfNull