代码之家  ›  专栏  ›  技术社区  ›  Wolf5

是否可以通过反射来获取调用方法类的实例,或者调用堆栈中的任何方法?

  •  2
  • Wolf5  · 技术社区  · 16 年前

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

    尝试“破解”Web服务的解决方案以传递传入调用的超时值(当您调用一个Web服务,而该Web服务又使用WSE调用一个新的Web服务时。当客户端设置5分钟的超时并且下一级别只有100秒的默认值,或者反过来说,这很糟糕。)。

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

    所以我想知道如果我在两个级别上使用stacktrace getmethod,我是否能够以任何方式获得该实例?到目前为止,我只能得到该类的类型,而不能得到实例。

    1 回复  |  直到 16 年前
        1
  •  0
  •   JDMX    16 年前

    我不熟悉WSE,但对反射非常了解。要获取实例,您需要具有引用或引用的对象。如果可以找到任何将调用对象作为引用的类,请使用Reflection.GetField、Reflection.GetProperty和/或Reflection.GetMethod获取该值。即使这意味着要通过5个带有保护字段的层,只要你能走到那里,你就能找到它。但是如果它是一个干净的中断,就像一个不同线程或exe的派生,并且没有传递任何标识信息,那么你就不走运了。您必须使用外部源来存储所需的超时,然后让调用的每一方引用它。使用RedGate.NETReflector查看类以供参考。

    推荐文章