J'ai pas bien compris ton probleme, mais visiblement, a la compilation, tu n'as aucune idee du type qui va t'arriver. Donc cu coup, tu n'as pas vraiment le choix. En regardant un peu comment c'est fait ce truc la, ca m'a l'air supre mal foutu. Ce qu'il faut moralement c'est exploiter un pattern de visiteur pour elever ton objet a son vrai type et faire l'appel de fonction qui va bien. Mais ce truc la a l'air super mal foutu, et du coup je pense que tu n'as pas trop le choix.
Basiquement ton seul choix a l'air d'etre:
if (fieldInfo.FieldType == typeof(string))
return true;