我有一个linq上下文,我正在查看所有数据表,我试图获取所有表中的字段列表
foreach (var code in ctx.GetType().GetProperties())
{
Console.WriteLine(code.PropertyType + " - " + code.Name + " ");
if (code.PropertyType.ToString().Contains("System.Data.Linq.Table"))
{
//this does not give me what i want here
foreach (var pi in code.PropertyType.GetType().GetProperties())
{
Console.WriteLine(pi.Name);
}
}
}
这不会向我提供每个表格中的列。
有什么想法吗?
简单地说,当我所拥有的是我试图获取属性的对象的propertyInfo时,我试图获取所有属性。
-Hurricane
答案 0 :(得分:1)
foreach (var code in ctx.GetType().GetProperties())
{
Console.WriteLine(code.PropertyType + " - " + code.Name + " ");
if (code.PropertyType.ToString().Contains("System.Data.Linq.Table"))
{
//this does not give me what i want here
foreach (var pi in code.PropertyType.GetGenericArguments()[0].GetProperties())
{
Console.WriteLine(pi.Name);
}
}
}
将其更改为。您正在反思System.Data.Linq.Table,但请记住,DataContext上的属性是Table< T>其中T是表示数据库中实际表的类。因此,您需要反过来反思T.