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 回答