Значение свойства статического класса в созданном домене
От: -Cheese-  
Дата: 17.06.14 08:22
Оценка:
Всем привет.
Столкнулся с непонятной проблемкой.
Предположим есть сборка MyCore.dll со следующим классом

namespace MyCore
{
public static class CustomEnvironment
{
  public static ApplicationMode Mode {get; set;}
  static CustomEnvironment()
  {
    Mode = ApplicationMode.Production;
  }

}

public enum ApplicationMode
{
    Test = 0,
    Production = 1,
    Debug = 2,
}
}


В другом приложении я создаю новый домен
AppDomainSetup setup
   = new AppDomainSetup {
      ApplicationBase = Path.GetDirectoryName(Path.GetFullPath(info.PluginLibraryPath)),
      PrivateBinPath = Path.GetDirectoryName(Path.GetFullPath(info.PluginLibraryPath)) + ";",
      ConfigurationFile = Path.GetFullPath(info.PluginLibraryPath) + ".config"
     };
Evidence evidence = new Evidence();
evidence.AddHost(new Zone(SecurityZone.MyComputer));
AppDomain pluginDomain = AppDomain.CreateDomain(PluginGuid, evidence, setup);


пытаюсь установить значение свойства
MyCore.CustomEnvironment.Mode = ApplicationMode.Debug
внутри нового домена

var name = AssemblyName.GetAssemblyName("MyCore.dll");
Assembly assembly = pluginDomain.Load(name);
                
Type type = assembly.GetType("CustomEnvironment");
PropertyInfo propertyInfo = type.GetProperty("Mode");
propertyInfo.SetValue(null, ApplicationMode.Debug, null);


затем в домене создаётся рабочий класс и в нём вызывается проверка свойства MyCore.CustomEnvironment.Mode — оно оказывается ApplicationMode.Production.
почему? что не так?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.