我不知道:
- 如果这可行。
- 如果这是个好主意。
- 按顺序叫什么 了解更多信息。
但我认为其意图相当明显。
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
我在做什么?这是疯狂还是有帮助?它似乎有帮助。
最佳答案
我认为拥有一个 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();
}
}
关于c# - 此方法尝试的术语是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9132552/