J'ai vu l'inverse de cette question plusieurs fois, mais je n'ai pas vu comment faire ce que je voudrais.Obtenez une représentation sous forme de chaîne d'une propriété en C# à l'exécution
Supposons que je le code suivant:
var myNewData = from t in someOtherData
select new
{
fieldName = t.Whatever,
fieldName2 = t.SomeOtherWhatever
};
Si je veux lier des données à cette classe, ma définition de la colonne devrait inclure des chaînes codées en dur comme « fieldName » et « FieldName2 ». Y at-il un moyen d'appeler la réflexion ou autre chose pour que je puisse faire quelque chose d'équivalent au code ci-dessous (je sais que le code ci-dessous n'est pas valide, mais je cherche une solution valide).
string columnName = GetPropertyName(myNewData[0].fieldName);
Mon but est que si les changements de nom variables sur la classe anonyme, une erreur de compilation monteraient jusqu'à ce que toutes les références ont été fixés, contrairement aux données actuelles de liaison qui repose sur des chaînes qui ne sont pas vérifiées avant l'exécution .
Toute aide serait appréciée.
C'est exactement ce que je cherchais. Merci. – gwerner
+1 Une approche intelligente! Quand j'ai pensé à passer le champ à une méthode, juste la référence à la valeur est passée, ainsi vous n'avez aucune chance de trouver jamais le nom du champ passé. Mais passer un arbre d'expression via lambda résout ce problème. Solution cool :) –