我们有一个 .net 应用程序,我们没有开发但使用它。我可以使用反射器告诉我,该应用程序有 1) 表单主表单中有一个静态变量,它是对“主”表单的引用,2) 有一个被触发的事件,我希望能够根据该事件采取操作。
我知道如果它在我的应用程序中我会做什么 (mainForm.DefaultInstance.OnAlarm += myAlarmHandler;) - 即使它不在我的应用程序中,是否可以执行此操作?如果有帮助的话,我想与之交互的应用程序只能有一个实例。
此外,如果我可以做到这一点,是否可以调用该应用程序中的其他方法,就好像应用程序本身触发了它们(特别是单击方法上的按钮)并设置 winform 文本框的文本?
感谢您对此提供的任何帮助!
最佳答案
您可能需要查看 PostSharp,因为它可以通过在运行时编织新的方面来帮助您进行此修改。
http://www.postsharp.org/aop-net/runtime-weaving
好的一点是,当您进行试验时,您不会更改驱动器上的程序,因为所有更改都会在加载程序集时发生。
问题是您可能会违反您的许可协议(protocol),因为禁止对其程序进行任何更改,因此您可能需要与您公司的律师讨论此事。
如果您可以将一个方面注入(inject)到程序中,那么它需要调用您的程序(也许作为 Web 服务调用)来传递信息,除非您只是希望它在事件发生时启动您的程序,传入某些参数。
我还没有尝试过这个,因为我倾向于不喜欢运行时编织,并且在我对这个工具进行更多实验之前正在等待 PostSharp 2.0,尽管我在 Java 上广泛使用了 AspectJ。
关于c# - 在我的 .NET 应用程序中添加一个函数作为另一个 .NET 应用程序中的事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1652565/