我们正在使用外部供应商的 dll 作为我们应用程序的一部分与他们进行通信。这个 dll 有一个静态类,其中包括一些确定用于连接到供应商的帐户(凭据)的属性。但是,我们的应用程序需要根据代码路径使用两个不同的帐户进行连接。这很好(我们只需在每次连接之前设置正确的帐户),但问题是我们还需要将事件处理程序绑定(bind)到供应商的事件(也在这个静态类中)并且事件处理程序需要响应为每个帐户触发的事件。拥有静态类的一份副本意味着只有来自当前连接帐户的事件会被拾取。

我知道这不是一个好的设计(如果由我决定,供应商的类将被实例化两次,每个帐户一次),但我们无法控制供应商如何设计他们的 dll,他们不会更改。

似乎让事件处理程序监视两个帐户的事件的唯一方法是拥有我们应用程序的两个副本,但这真的很难看。有没有办法以某种方式从我们的项目中引用两个 dll 副本?或者有什么其他方法可以解决这个问题?

最佳答案

您可以使用 AppDomains 实现您的需求。静态实例不会跨 AppDomain 边界共享。您可以编写代码来订阅来自不同应用程序域的事件,但远程处理会带来一些复杂性。有关更多信息,请参阅这些问题和答案:

What is a .NET application domain?

How can I subscribe to an event across AppDomains (object.Event += handler;)

关于c# - 需要 2 个来自外部供应商的 dll 的静态类副本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25147144/

10-10 19:55