【发布时间】:2014-09-17 12:42:57
【问题描述】:
有没有办法通过反思来做以下事情?不需要反射。任何方法都可以接受。
我有两个程序集,VenderAssembly(我没有源代码)和 MyAssembly。我想在调用 VenderAssembly.VendorMethod 时调用 MyAssembly.MyMethod,而 MyAssembly 不是负责调用 VenderMethod 的程序集。
我不需要访问传递给VendorMethod 的参数值。我只需要在每次调用VendorMethod 时触发MyMethod。
【问题讨论】:
-
所以
VenderAssembly实际上没有事件,对吗? -
VendorAssembly 是否强签名?
-
我会退后一步,问为什么你需要这样做。故意这样做是一件困难的事情(在签名程序集的情况下可能是不可能的),并且任何解决方案都可能是 hacky 并且不健壮。如果您完全在自己的程序集中工作,您可能能够将供应商类包装在您自己的类中,并让所有调用代码都使用您的包装器。但是,如果您试图检测来自您无法更改的第三个程序集的调用,那么您可能不走运。
-
好的。因此,在我看来,您可能应该开始另一个问题,并询问如何“在第三方程序集中向 asp.net 应用程序添加路由”(或类似的话)。虽然,如果有人已经回答了这个问题,你可能会先搜索。恕我直言,这个问题本身就很有趣,所以我不会删除它。
-
顺便说一句,这个问题与事件完全无关。我认为正确的短语是“拦截对另一个程序集中的方法的调用”
标签: c# .net reflection