PropertyInfo子属性

时间:2009-06-12 16:21:05

标签: c# reflection propertyinfo

我有一个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

1 个答案:

答案 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.