2

バックグラウンド:

同じタイプのオブジェクトのインスタンスが 2 つあります。1 つのオブジェクトには、接続しているデバイスの構成が取り込まれ、もう 1 つのオブジェクトには、ハード ドライブに保存した構成のバージョンが取り込まれます。

ユーザーはどちらも変更できるので、それらを比較して違いをユーザーに提示したいと思います。

各オブジェクトには多数の ViewModel プロパティが含まれており、それらはすべて extendsViewModelBaseであり、比較したいものです。

質問:

私が提案しようとしているものよりも、これを行うためのより良い方法です。

Reflection を使用してオブジェクトの各プロパティを検査することを考えています。それぞれの extends についてViewModelBase、それらの各プロパティをループします。異なるものについては、名前と値をリストに入れ、それをユーザーに提示します。

この車輪を発明したというより、これは以前に解決された問題なのだろうか?それを行うためのより良い方法はありますか?

4

3 に答える 3

3

比較するプロパティの量によっては、手動チェックがより効率的なオプションになります。ただし、多くのプロパティがある場合、またはチェックを動的にしたい場合 (つまり、新しいプロパティを追加するだけで自動的に機能する場合) は、リフレクションがここに行く方法だと思います。

于 2012-08-01T09:34:58.723 に答える
2

タイプにequals演算子を実装しないのはなぜですか?

http://msdn.microsoft.com/en-us/library/ms173147(v=vs.80).aspx

編集:もっと注意深く読んだことで、あなたが実際に求めているのは、実際の比較を行うための最も効率的な方法であることがわかります。

リフレクションを介してそれを行うと、コードを節約できますが、時間がかかります。多くの手動比較でそれを行うことはかなり速いですが、より多くのコードです。

于 2012-08-01T09:42:41.080 に答える
0

あなたがかなり抑止力があり、良い方法で怠惰である場合。両方のソリューションのメリットを組み合わせることができます。cciのようなツールの助けを借りて、プロパティを比較するメソッドを発行できます。これの利点は、リフレクションコードがコンパイル時に実行され、実行時に実行するためのstraitforwardメソッドが残ることです。これにより、比較コードを気にすることなく、適切と思われるモデルを変更できます。これには欠点があり、それは非常に難しいcciの学習です。

于 2012-08-01T10:06:38.720 に答える