Боюсь, вы не можете - нет ничего лучше нулевого безопасного оператора разыменования Groovy: (
Полагаю, вы могли бы создать для Person "нулевой объект" - то есть реальный экземпляр, но со всеми свойствами null. Тогда вы можете использовать:
Console.WriteLine((customer.Person ?? Person.Null).Name ?? "Unknown");
... но это довольно ужасно. (Это также не проверяет, является ли customer
нулевым.)
Другой вариант - написать метод расширения для Person:
public static string NameOrDefault(this Person person, string defaultName)
{
return person == null ? defaultName : person.Name ?? defaultName;
}
Тогда:
Console.WriteLine(customer.Person.NameOrDefault("Unknown");