如果「變量」你的意思是類字段(如類級別的變量),你可以使用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);
}
}
}
取而代之的查詢在這個MSDN微軟例如使用反射獲得接入,如本例中的FieldInfoClass
從Main方法中可以選擇你的FeatList
類。邏輯不需要在同一個類的主要方法中。你可以將你的邏輯版本放到你想要查詢的實體的外部,並且實際上用這種邏輯來查詢任何對象或類。
無論這些字段是私人的還是公共的還是別的什麼都沒關係 - 通過反射您可以訪問所有這些字段。
有關如何使用反射提取字段值的信息,請參閱MSDN示例代碼FieldInfo.GetValue(..) method (MSDN link)。
你需要指定一個`BindingFlag`。 – 2010-11-28 06:03:15
不,我不知道。默認情況下,包括靜態,公共和實例字段。 – 2010-11-29 16:46:26