1

私は最近、主に新しいクラスをインスタンス化し、フィールドにプロパティを設定することを目的として、Reflectionのトピックに取り組んでいます。パスによって...たとえば、パブリックプロパティを持つGamesというクラスがある場合があります-

Game myGame = new Game()

myGame.GamingProperties.HowToPlay = "bla bla bla";
myGame.StateProperties.CreationTime = DateTime.Today;

したがって、たとえば、パスが「GamingProperties.HowToPlay」のプロパティに(リフレクションマジックを使用して)値を設定する必要があります。

これまで、Guy Mahieuの「 PropertyReflector 」クラスを使用してきました。これは必要なことを正確に実行しますが、100,000秒のオブジェクトのリフレクト/デシリアライズに関してはゆっくりです。

少し後で、「式ツリー」(および「 FastReflection 」のようなプロジェクト)を使用することで、プロパティ値をはるかに高速に設定できることがわかりました。しかし、今はFastReflectionができないため、行き詰まりました。ネストされた型に適切に値を設定します。

とにかく-問題は-System.Windows.PropertyPathこれで何とかして私を助けることができるかどうかです。それも関係がありますか?たぶん私は自分のニーズにそれを使用することができますか、または.Binding(と密接に関連しているSystem.Windows.PropertyPath)メソッドを使用できますか?

私は明確で、私の質問にあまり乱雑ではないことを願っています。ヒントや提案に感謝します...

4

1 に答える 1

3

簡単な答えはノーです。PropertyPathは、DependencyPropertiesを他のプロパティ(依存関係または通常)に関連付けるためにWPFバインディングシステムによって使用されます。依存関係プロパティにバインドする場合、バインドシステムはプロパティパスを使用して、WPFメタデータを使用してバインドされたプロパティを解決できます。CLRプロパティにバインドする場合、プロパティを解決するために.NETリフレクションを使用する必要があります。

いずれの場合も、CLRプロパティの設定には通常使用されませんが、双方向バインディングを使用できます。

それはそれほど多くのオブジェクトの速度を上げることはなく、あなたの問題の解決策ではないかと思います。

于 2011-09-01T17:27:27.710 に答える