0

我知道,如果我有 2 个不同的 DLL,并且在每个 DLL 中我将同一个对象实例化为一个静态对象(例如,私有静态 MyObject objRandom = new MyObject();),则会创建它的 2 个实例。

如果我通过依赖注入将静态对象从 DllA 传递到 DllB 会怎样,我只会在堆栈中创建它的 1 个实例吗?

4

2 回答 2

1

这取决于您的代码,但很可能是 1 个实例。静态是按 AppDomain 实例化的,而不是按 DLL 实例化的。您的 DLL 都加载到同一个应用程序域中。

于 2012-10-31T02:18:56.360 回答
0

对象不是静态的,引用是。您可以根据需要对同一实例进行尽可能多的引用。您的示例中的静态内容是您的类中的引用,因此包含的同一类的不同实例static MyObject objRandom...将具有相同的实例。

如果其他类以静态或非静态方式引用相同的对象,则可以。即使该类在另一个 DLL 中。

希望它澄清它是如何工作的。

于 2012-10-31T02:22:06.117 回答