我需要一个列表来存储类中的所有字段-值。
正如我在下面粘贴的那样,这个类只是一些公共的const string变量。
public class HTDB_Cols
{
public class TblCustomers
{
public const string CustID = "custID",
Name = "name",
CustType = "custType",
AddDate = "addDate",
Address = "address",
City = "city",
Phone = "phone",
Cell = "cell";
}
}这是一个返回字符串列表的方法,它使我能够拥有一个字符串列表,表示我的所有表、列名称,尽管有些情况下由于我收到错误而无法处理这段代码。
“非静态字段需要目标”。
public class GetClassFields
{
public static List<string> AsList(string TableName)
{
return typeof(HTDB_Cols).GetNestedTypes()
.First(t => String.Compare(t.Name, TableName, true) == 0)
.GetFields()
.Select(f => f.GetValue(null) as string)
.ToList();
}
}试图按以下方式使用它:
foreach (string tblCol in RobCS_212a.Utils.Reflct.GetClassFields.AsList (DBSchema.HTDB_Tables.TblCustomers))
{
Response.Write(string.Concat(tblCol, "<br />"));
}在类型'DBSchema.HTDB_Cols+TblTimeCPAReport‘上定义的字段’DBSchema.HTDB_Cols+TblTimeCPAReport‘不是目标对象上的'DBSchema.HTDB_Cols’类型的字段。
发布于 2012-12-12 02:52:32
你的密码很接近。有两个问题,都位于linq select方法调用的参数中:
通过这两个更改,您的方法可以工作。名单如下:
public class GetClassFields
{
public static List<string> AsList(string tbl)
{
var instanceOfClass = new HTDB_Cols();
return typeof(HTDB_Cols).GetNestedTypes()
.First(t => String.Compare(t.Name, tbl, true) == 0)
.GetFields()
.Select(f => f.GetValue(instanceOfClass).ToString())
.ToList<String>();
}
}您可以按以下方式调用此函数:
var fields = GetClassFields.AsList("TblCustomers");它返回所需的信息:

https://stackoverflow.com/questions/13831888
复制相似问题