Je ne vois pas une bonne approche avec la notation don dans la chaîne, car elle a plus de problèmes avec les collections que l'approche générique :
Par exemple Persion.Friends.Name
- Quel élément est un tableau dans cette chaîne ?
- Vous devez appliquer une conversion explicite pour les éléments de collection (emplacement possible des bogues)
Les méthodes génériques sont plus fiables en termes de prise en charge et d'utilisation :
var friends = await GetFieldValue<Person, Friend[]>("avi", x => x.Friends);
var names = friends.Select(x=>x.Name).ToArray();