如果“变量”你的意思是类字段(如类级别的变量),你可以使用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