Всем привет.
Столкнулся с непонятной проблемкой.
Предположим есть сборка 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.
почему? что не так?