4

ASP.NETアプリケーションのデバッグ中に、非常に大きなオブジェクトの状態全体のプリントアウトを取得したいと思います。そのオブジェクトのすべてのプロパティと値、およびすべてのオブジェクトプロパティに対して再帰的に同じものが必要です。

アプリケーションのフロントエンドはかなりの遅延の後にタイムアウトするため、オブジェクトを完全に調べるための十分な時間がないため、時計を追加したり、イミディエイトウィンドウを使用したり、オブジェクトにカーソルを合わせたりすることはできません。

デバッグモードでオブジェクトの完全なプリントアウトを取得する方法、またはこれを行うユーティリティまたはC#関数を取得する方法はありますか?

4

2 に答える 2

1

リフレクションを使用して、クラス タイプのすべてのプロパティとフィールドのリストを取得し、それを使用して各プロパティ/値の実行時の値を取得し、それらをコンソールに吐き出すことができます。

PropertyInfotype ( here ) とFieldInfotype ( here )はType、独自のクラス インスタンスのオブジェクトから取得する必要があるものです。

MyObject myObject = ... //setup my object
Type myType = myObject.GetType(); //or Type.GetType(myObject); //I think

PropertyInfo[] properties = myType.GetProperties();
FieldInfo[] fields = myType.GetFields();

properties[0].GetValue(myObject); //returns the value as an Object, so you may need to cast it afterwards.
于 2010-02-12T00:59:54.503 に答える
0

ここでは、リフレクションが最善の策です。ルートオブジェクトから始めて、そのすべてのプロパティとその値を取得し、必要に応じて、それらの値からプロパティと値を再帰的に取得できます。これは非常に強力な手法であり、まだ知らない場合は、とにかく学ぶ必要があります。これは、学ぶのに最適なプロジェクトになります。:)

于 2010-02-16T01:05:58.803 に答える