静态上下文总是单一的C#?
我有一个内部有一个静态字段的库。 我想创build一个应用程序,并引用这个库,所以我有这个静态字段的两个实例。 .Net运行时不允许两次引用同一个库,但我不知道是否有可能克服这个限制?
我不能更改库,但是我可以复制/重命名它。
这并不像你想的那么疯狂。 实际上,您可以使用AppDomains来实现这一点。
每个AppDomain
都有自己的静态variables存储位置。 所以你可以在你的进程中创build第二个AppDomain,并使用一个从MarshalByRefObject
inheritance的对象来进行通信。
虽然Lucas对AppDomain 的build议可行,但也可以使用generics创build这种效果,因为具有不同genericstypes参数的类被视为不同的类,因此具有自己的静态字段。
public class SomeClass<T> { public static string SomeField; }
然后:
SomeClass<int>.SomeField = "A"; SomeClass<string>.SomeField = "B"; Console.WriteLine(SomeClass<int>.SomeField); // A Console.WriteLine(SomeClass<string>.SomeField); // B
例如, SomeClass<int>
将在库中设置,而SomeClass<string>
将是您的副本。 当然,如果你可以改变图书馆,或者图书馆已经使用了generics,这只会起作用。
这两个build议都应该可以工作,但是对于build筑来说,这一切都非常棒。
我没有意识到的上下文,但在你的情况是有可能只是创build一个新的属性不是静态的,只有两个实例的聚合类。 这听起来像对我来说更好的方式。
每当我有智能的代码,一个警报开始在我的头上。 智能代码对于开发者来说总是太聪明了。