Я использую сторонний класс с некоторыми статическими членами:
class TheirClass{ //from metadata
static TheirType TheirProp
}
Я использую экземпляры этого класса в своем коде
class MyWorkLoad {
TheirClass theInstance
}
Но мне требуется отдельный контекст / домены / что угодно
{//My Program
var w1 = MyWorkFactory.Create();
w1.doWorkBasedOnFreshContext()
var w2 = MyWorkFactory.Create();
w2.doWorkBasedOnFreshContext(); //err, dirty context, shared with w1
}
Я пытался создать дочерние домены приложений, но все еще получал то же поведение:
protected static AppDomain CreatedChildDomain(AppDomain parentDomain)
{
Evidence evidence = new Evidence(parentDomain.Evidence);
AppDomainSetup setup = parentDomain.SetupInformation;
AppDomain.CreateDomain("Lab_"+generationCount, evidence, setup);
}
Это фабричный метод, который я использую для создания экземпляра
public static MyWorkLoad Create(string LabConfigPath)
{
AppDomain subdomain = CreatedChildDomain(AppDomain.CurrentDomain);
ExeConfigurationFileMap fileMap =
new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = LabConfigPath;
var config =
ConfigurationManager.OpenMappedExeConfiguration(fileMap,
ConfigurationUserLevel.None);
var conf = config.AppSettings.Settings;
var nextWork = new MyWorkLoad(subdomain, conf);
generationCount++;
return nextWork;
}
Какмогу ли я достичь желаемого поведения изоляции?