Si par « Variables » signifient les champs de classe (comme variables au niveau de la classe), vous pouvez utiliser réflexion pour avoir accès, comme dans cet exemple MSDN Microsoft en utilisant la FieldInfo class (see MSDN link for more info)
using System;
using System.Reflection;
public class FieldInfoClass
{
public int myField1 = 0;
protected string myField2 = null;
public static void Main()
{
FieldInfo[] myFieldInfo;
Type myType = typeof(FieldInfoClass);
// Get the type and fields of FieldInfoClass.
myFieldInfo = myType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance
| BindingFlags.Public);
Console.WriteLine("\nThe fields of " +
"FieldInfoClass are \n");
// Display the field information of FieldInfoClass.
for(int i = 0; i < myFieldInfo.Length; i++)
{
Console.WriteLine("\nName : {0}", myFieldInfo[i].Name);
Console.WriteLine("Declaring Type : {0}", myFieldInfo[i].DeclaringType);
Console.WriteLine("IsPublic : {0}", myFieldInfo[i].IsPublic);
Console.WriteLine("MemberType : {0}", myFieldInfo[i].MemberType);
Console.WriteLine("FieldType : {0}", myFieldInfo[i].FieldType);
Console.WriteLine("IsFamily : {0}", myFieldInfo[i].IsFamily);
}
}
}
Au lieu de demander le FieldInfoClass
dans cet exemple de la méthode Main, vous pouvez choisir votre classe FeatList
. La logique n'a pas besoin d'être dans une méthode principale de la même classe. Vous pouvez placer votre version de la logique externe à l'entité que vous souhaitez interroger et en fait interroger n'importe quel objet ou classe avec ce type de logique.
Peu importe si les champs sont privés ou publics ou quelque chose d'autre - grâce à la réflexion, vous pouvez avoir accès à tous.
Voir l'exemple de code MSDN à FieldInfo.GetValue(..) method (MSDN link) pour savoir comment extraire la valeur du champ en utilisant la réflexion.
Vous devez spécifier un 'BindingFlag'. –
Non, je ne le fais pas. Par défaut, les champs statiques, publics et d'instance sont inclus. –