No veo un buen enfoque con la notación don en cadenas, porque tiene más problemas con las colecciones que el enfoque genérico:
Por ejemplo Persion.Friends.Name
- ¿Qué elemento es una matriz en esta cadena?
- Debería aplicar una conversión explícita para los elementos de la colección (posible lugar de errores)
Los métodos genéricos son más confiables en el soporte y el uso de:
var friends = await GetFieldValue<Person, Friend[]>("avi", x => x.Friends);
var names = friends.Select(x=>x.Name).ToArray();