ルートオブジェクトを受け取り、ルートオブジェクトから到達できるすべてのオブジェクトへの参照を含むリストを返すメソッドを実装したいと思います。その署名は次のようになります。
static List<object> EnumerateObjectsInRange(object root);
GetProperties()を使用してPropertyInfoオブジェクトの配列を取得し、GetValue()を使用してこれらのプロパティの値を取得し、最後に値ごとにGetProperties()を再度呼び出して、オブジェクトグラフ全体にアクセスするまでこの手順を繰り返すことを考えています。しかし、これが最善のアプローチかどうかはわかりません。
助言がありますか?
編集:
到達可能性の2つの定義を考えることができます:
- ルートオブジェクトの所有者がアクセスできるすべてのオブジェクト(公開されているオブジェクト)。
- ルートオブジェクトが属するオブジェクトグラフによって参照されるすべてのパブリックオブジェクトとプライベートオブジェクト。
私の目的には、最初の定義で十分です。