はい、リフレクションは行くべき道でしょう。まず、Type
リストのインスタンスのタイプ(実行時)を表すを取得します。これを行うには、のGetType
メソッドをObject
呼び出します。これはObject
クラス上にあるため、すべての型の派生元として、.NETのすべてのオブジェクトから呼び出すことができますObject
(技術的にはすべてではありませんが、ここでは重要ではありません)。
あなたが持ってたらType
、インスタンスを、あなたが呼び出すことができるGetProperties
方法を取得するにはPropertyInfo
上のプロパティに関する実行時informationaを表すインスタンスをType
。
のオーバーロードを使用して、取得GetProperties
するプロパティを分類することができます。
そこから、情報をファイルに書き出すだけです。
上記のコードを翻訳すると、次のようになります。
// The instance, it can be of any type.
object o = <some object>;
// Get the type.
Type type = o.GetType();
// Get all public instance properties.
// Use the override if you want to classify
// which properties to return.
foreach (PropertyInfo info in type.GetProperties())
{
// Do something with the property info.
DoSomething(info);
}
メソッド情報またはフィールド情報が必要な場合は、GetMethods
またはGetFields
メソッドのオーバーロードの1つをそれぞれ呼び出す必要があることに注意してください。
また、メンバーをファイルにリストすることは1つのことですが、この情報を使用して、プロパティセットに基づいてロジックを駆動しないでください。
タイプの実装を制御できると仮定すると、共通の基本クラスから派生するか、共通のインターフェースを実装し、それらに対して呼び出しを行う必要があります(as
またはis
演算子を使用して、操作している基本クラス/インターフェースを特定するのに役立ちますランタイム)。
ただし、これらの型定義を制御せず、パターンマッチングに基づいてロジックを駆動する必要がある場合は、問題ありません。