Существует только два способа доступа к классу из другого AppDomain: один - это класс [Serializable]
, как у вашего класса Test, другой - если класс наследует от MarshalByRefObject .Поскольку ваш класс является сериализуемым, его копия создается для каждого кросс-доменного вызова.Таким образом, Test
, который получает основной домен приложения при вызове ...
Test TObj = newDomain.CreateInstanceAndUnwrap(typeof(Test).Assembly.FullName, typeof(Test).FullName) as Test;
, на самом деле не является экземпляром Test, созданным в домене приложений DomNew, - это копия, локальная для основного"AppDomain и, следовательно, ссылается на статические переменные из" основного "AppDomain.
Если вы хотите, чтобы Test
демонстрировал ожидаемое поведение, сделайте его наследником от MarshalByRefObject вместо того, чтобы быть сериализуемым.