Я не знаю:
- если это работает.
- если это хорошая идея.
- как это называется по порядку
чтобы узнать больше об этом.
Но я думаю, что намерение довольно очевидно.
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
Что я делаю? Это безумно или полезно? Это кажется полезным.