私は現在の私の会社の比較的新しい従業員なので、私はまだソフトウェアの周りを勉強するという点で「消防ホースから飲む」建築。ユニットテストを書いている間に、いくつかの非常に大きなオブジェクトを扱っていることが分かりました。ディスカッションのために「SavedOrder」と言うと、私が探している特定のデータを見つける場所を見つける必要があります。.NETのJITデバッガ内のオブジェクトのメンバーを「検索」
私が気づいている問題は、各SavedOrderが継承とメンバー(メンバーを持っているメンバー、メンバーがいるなど)、データの一部を探しています。
今のところ私は探しているものを見つけ出すために、自分の腕時計を広げてオブジェクトにマウスをかけています。誰かが、このオブジェクトが "タイプA"または値 "SomeEnum.SomeValue"の何かを持っているかどうかを見つけるために使用するプラグイン/テクニックを知っていますか?
編集:すべての良い入力は、私の目標を完全に解決するものはまだありません。オブジェクトブラウザー(オブジェクトブラウザーとリフレクター)は各オブジェクトのメンバーをブラウズするのにはうまく機能しますが、ポイントAをポイントDにリンクするという目的で、ポイントAをポイントBまたはDにCに移動するだけです。
私は最善の解決策は次のようになり記述するう擬似C#再帰アルゴリズムを推測:多分、ことはできません知っている
WheresWaldo FindMember(Object o)
{
foreach(PublicMember member in o)
{
if(o.IsType(MyType))
return Success!;
else
return WheresWaldo(member);
}
}
。
私が望むものを記述することは困難でした。明確にするために、私の目標は注文の保証期間を見つけることでしたが、その保証はSavedOrder.Header.ProductSupport.WarrantyLengthにありましたが、それがどこにあったのかわかりませんでした(そしてより多くの灰色のオブジェクト名で対処する必要があります)。どのようにそのフィールドがどこにあるのか調べるにはどうすればいいですか? –
特定のインスタンスのWarrantyLengthの値を調べたいのですが、このプロパティを持つタイプがわからないのですか? –
私はどこにいるのか分かりません:)。 私が見せようとしたのは、SavedOrderにHeaderがあり、WarrantyLengthプロパティを持つProductSupportがあるという点でプロパティが「4深い」ということでした。私は直感的には、保証はSavedOrderのどこかにあると知っていますが、それを見つけるために何百ものプロパティをナビゲートする方法はわかりません。 –