Можно ли изменить значение свойства строки в .NET AppDomain из другого отдельного .NET AppDomian - PullRequest
0 голосов
/ 20 октября 2010

Можно ли изменить значение открытого свойства (строки типа) класса в данном .NET AppDomain из другого отдельного .NET AppDomain, предполагая, что оба AppDomain работают в одном и том же процессе.Другое важное предположение состоит в том, что код, работающий в домене приложения, который содержит свойство, не может быть изменен .. т.е. .. перекомпилирован с любыми изменениями.

Спасибо!

1 Ответ

1 голос
/ 20 октября 2010

Конечно. Вам просто нужно предоставить доступ к свойству через объект MarshalByRef, который позволит одному экземпляру в AppDomain A обратиться к свойству в AppDomain B.

Вот простой пример класса, который будет создан в AppDomain B из AppDOmain A:

   internal class SomeLinkClass : MarshalByRefObject
   {
      internal void UpdateProperty(string newValue)
      {
         // this function actually will execute within AppDomain B

         // somehow get access to the property and then set it 
         // with the new value.
      }
   }

А вот как вы бы потребляли его из AppDomain A:

// somehow you need to get a ref to AppDomain B
    SomeLinkClass linkClass = appDomainB.CreateInstanceFromAndUnwrap(
                                  Assembly.GetExecutingAssembly().Location,
                                  typeof(SomeLinkClass).FullName) as SomeLinkClass;
...