2

是否可以使用反射来获取调用方法的类的实例?

试图“破解”Web服务的解决方案以传递来电的超时值(当您调用Web服务时,该Web服务又使用WSE调用新的Web服务。当客户端将超时设置为5分钟和下一个级别时,这很糟糕只有 100 秒的默认值,反之亦然。)。

我已经有了一个自定义策略,一旦代理实例调用 .SetProxy(...),就会调用它。这是我想要访问的实例,但我可以开始编码的策略代码是下面的 3 个“级别”。

所以我想知道如果我将堆栈跟踪 getmethod 提高 2 个级别,我能以任何方式获取该实例吗?到目前为止,我只能获得该类的类型而不是实例。

4

1 回答 1

0

我不熟悉 WSE,但对反射很了解。要获取实例,您需要具有其引用或对引用的引用的东西。如果您可以找到任何将调用对象作为引用的类,请使用 Reflection.GetField、Reflection.GetProperty 和/或 Reflection.GetMethod 来获取该值。即使这意味着要经过 5 层带有受保护的字段,只要你能走到那里,你就可以找到它。但是,如果这是一个彻底的突破,例如不同线程或 exe 的衍生,并且没有传递任何识别信息,那么你就不走运了。您将不得不使用外部源来存储所需的超时,然后让调用的每一方都引用它。使用 Red Gate .Net Reflector 查看类以供参考。

于 2010-02-23T00:17:40.447 回答