2

プロパティ名でオブジェクトをトラバースし、プロパティの値を取得できるメソッドが必要です。

より具体的には、入力として「Model.Child.Name」のような文字列があり、このメソッドがオブジェクトを受け取り、object.Model.Child.Name を介してプログラムで見つけることができる値を取得する必要があります。

これを行う唯一の方法はリフレクションを使用することだと理解していますが、落とし穴があると信じているため、このコードを自分で書きたくありません。また、多かれ少なかれ通常の作業だと思います。

C# でそのようなアルゴリズムのよく知られた実装はありますか?

4

2 に答える 2

2

反射は進むべき道です。

実行時にプロパティにアクセスするためのリフレクション

ObjectDumperを見て、必要に応じてソース コードを変更できます。

ObjectDumper は .NET オブジェクトを取得し、文字列、ファイル、textWriter などにダンプします。

于 2012-05-24T15:08:17.747 に答える
1

書くのはそれほど難しいことではありません。はい、いくつかの落とし穴がありますが、落とし穴を知ることは良いことです。

アルゴリズムは簡単で、ツリー構造をトラバースします。各ノードで、プリミティブ値 (int、string、char など) を調べて、これらの時間のいずれでもない場合は、1 つ以上のプリミティブを持ち、そのプリミティブにトラバースする必要がある構造体です。

落とし穴は、null、null 許容型、値と参照型などを扱うことです。すべての開発者が知っておくべき簡単なことです。

于 2012-05-24T17:16:40.850 に答える