Avec réflexion, vous pouvez rechercher une classe à partir d'une chaîne à l'exécution, mais vous pouvez aussi dire typeof (Foo) et obtenir la compilation vérification du type de temps, l'achèvement automatique, etc.C# équivalent de typeof pour les champs
Si ce que vous voulez est un champ pas une classe, vous pouvez le rechercher à partir d'une chaîne au moment de l'exécution, mais si vous voulez compiler le contrôle du temps etc., est-ce qu'il y a quelque chose comme fieldof (Foo.Bar)? Je connais le nom de la classe et du champ à l'avance, et je veux pouvoir me référer au champ au moment de la compilation plutôt qu'avec une recherche de chaîne au moment de l'exécution.
edit: Un exemple de ce que je veux utiliser pour cela, disons que j'ai une liste d'objets qui peuvent avoir été lus à partir d'une base de données, et je veux les afficher dans un DataGridView, mais je veux seulement colonnes pour certains champs. Je voudrais écrire une méthode quelque chose comme:
void DisplayData(object[] objs, params FieldInfo[] fields)
et pouvoir l'appeler comme
DisplayData(accounts, fieldof(Account.Name), fieldof(Account.Email));
Ce genre d'idée.
Un petit morceau de code pour illustrer votre question vous aidera à obtenir de meilleures réponses –
Il semble que vous tiriez le même type de classe de plusieurs assemblages. Si c'est le cas, vous pouvez envisager d'utiliser une interface et de faire votre type de temps de compilation en vérifiant cela. Vous pouvez ensuite affecter la variable d'instance à l'assembly chargé dynamiquement et tout ira bien. –
gbogumil - juste l'ensemble, mais plusieurs endroits dans le code où je veux faire une certaine opération sur différents champs de classes différentes, et donc besoin de pouvoir spécifier quels champs. J'ai ajouté un échantillon de code qui, je l'espère, pourrait clarifier. – rwallace