Если под «Переменными» вы подразумеваете поля класса (например, переменные на уровне класса), вы можете использовать отражение для получения доступа, как в этом примере MSDN Microsoft с использованием класса FieldInfo (см. Ссылку MSDN для получения дополнительной информации)
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);
}
}
}
Вместо запроса FieldInfoClass
в этом примере из метода Main вы можете выбрать класс FeatList
.Логика не обязательно должна быть в главном методе того же класса.Вы можете разместить свою версию логики вне сущности, которую вы хотите запросить, и фактически запросить любой объект или класс с помощью такой логики.
Неважно, являются ли поля частными или общедоступными, или что-то еще - благодаря размышлению вы можете получить доступ ко всем из них.
См. Пример кода MSDN в Метод FieldInfo.GetValue (..) (ссылка MSDN) , чтобы узнать, как извлечь значение поля с помощью отражения.