0

私は現在の会社では比較的新しい従業員なので、ソフトウェアとアーキテクチャの使い方を学ぶという点では、まだ「消防ホースから飲んでいる」のです。ユニットテストを書いているときに、いくつかの非常に大きなオブジェクトを扱っていることに気づきました。たとえば、「SavedOrder」について話し合うために、探している特定のデータの場所を見つける必要があります。

私が抱えている問題は、各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);
    }


}

誰が知っている、多分不可能です。

4

2 に答える 2

3

完全にフォローしているかどうかはわかりませんが、条件付きブレークポイントを使用できるかもしれません。関連するコードにブレーク ポイントを設定し、右クリックして条件付きブレーク ポイントを選択します。ここから、ブレークポイントが評価されるたびに評価されるコードを書くことができます。これにより、条件が満たされた場合にのみ停止するように指定できます。

編集:あなたのコメントに基づいて、リフレクターが役立つかもしれないと思います。特定のタイプまたはメンバーを検索するオプションがあります。関連するアセンブリで Reflector を起動します。F3 を押して検索し、メンバーに対して Ctrl-M を選択して、探しているメンバーの名前を入力します。完全一致のオン/オフを切り替えて、検索に役立てることができます。

于 2009-09-15T19:57:58.760 に答える
1

ObjectBrowserは、おそらく使用したいものです。それを使って物件を探すことができます。

于 2009-09-15T20:13:01.133 に答える