我有一个里面有静态字段的库.我想创建一个应用程序并引用这个库,所以我有两个这个静态字段的实例..Net运行时不允许两次引用同一个库,但我想知道是否有可能克服这个限制?
我不允许更改库,但我可以复制/重命名它.
Luc*_*ski 85
这并不像你想象的那么疯狂.实际上,您可以使用AppDomains实现此目的.
每个AppDomain
都有自己的静态变量存储位置.所以,你可以创建你的进程第二的AppDomain,并使用从继承的对象他们之间沟通MarshalByRefObject
就像在这个MSDN例子.
Dan*_*ker 58
虽然Lucas对AppDomains 的建议可行,但您也可以使用泛型创建此效果,因为具有不同泛型类型参数的类被视为不同的类,因此具有自己的静态字段.
public class SomeClass<T>
{
public static string SomeField;
}
Run Code Online (Sandbox Code Playgroud)
然后:
SomeClass<int>.SomeField = "A";
SomeClass<string>.SomeField = "B";
Console.WriteLine(SomeClass<int>.SomeField); // A
Console.WriteLine(SomeClass<string>.SomeField); // B
Run Code Online (Sandbox Code Playgroud)
例如,SomeClass<int>
将在库中设置,而SomeClass<string>
将是您的副本.当然,这只有在您可以更改库或库已经使用泛型时才有效.