У меня
public static class A
{
public static string ConnString;
}
[Serializable]
public class Test{
// Accesing A field;
public string ConnString{get{return A.ConnString;}set{A.ConnString=value;}}
}
void Main()
{
A.ConnString = "InitialString"; // I set A.ConnString in the current domain
var newDomain = AppDomain.CreateDomain("DomNew");
Test TObj = newDomain.CreateInstanceAndUnwrap(typeof(Test).Assembly.FullName, typeof(Test).FullName) as Test ;
TObj.ConnString = "NewDomainString"; // It is supposed to set A.ConnString in the newDomain aka a different instance of A.ConnString
// Here it is supposed to print two different values
Console.WriteLine(A.ConnString); // "InitialString"
Console.WriteLine(TObj.ConnString); // "NewDomainString"
}
Но НЕТ! Два WriteLines распечатывают одно и то же значение "NewDomainString"! ПОЧЕМУ???
этот код
TObj.ConnString = "NewDomainString"
предполагается изменить строку во вновь создаваемом домене, но, похоже, оба они ссылаются на один и тот же экземпляр!
Почему, что здесь происходит?