0

すべてのデータテーブルを見ている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 しかないときに、すべてのプロパティを取得しようとしています。

-ハリケーン

4

1 に答える 1

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 を反映する必要があります。

于 2009-06-12T16:30:50.353 に答える