0

私は最近インタビューに行きました、そしてそこで彼らは私に次の質問をしました:

渡されたデータパスに基づいてオブジェクト階層を移動し、次のメソッドを実装するプロパティの値を返すコンポーネントを記述します。

パブリックオブジェクトgetValueFromPath(object parentObj、string dataPath);

オブジェクト階層は次のようになります。

Object1
  objectRef2
    property1
    property2

parentObjはObject1になります

dataPathはobjectRef2.property2になります

誰かが私にそれをどのように行うことができるかについての考えを教えてもらえますか?

4

1 に答える 1

5

リフレクションを使用する必要があります。

最初のステップは、dataPathonを分割し、 ( )のタイプを表すオブジェクト.への参照を取得することです。 System.TypeparentObjparentObj.GetType()

次に、パス内の要素ごと.GetMember(...)に、オブジェクトのようなものを使用してその名前のメンバーを検索し、それに応じて現在のオブジェクトTypeを更新します。Type

最後にプロパティに到達し、関連付けられたProprtyInfoオブジェクト.GetValue(...)を取得したら、プロパティの値を取得するために呼び出す必要があります。

于 2013-03-12T01:53:51.603 に答える