Я хотел бы использовать объект через AppDomains.
Для этого я могу использовать атрибут [Serializeable]:
[Serializable]
class MyClass
{
public string GetSomeString() { return "someString" }
}
Или подкласс из MarshalByRefObject:
class MyClass: MarshalByRefObject
{
public string GetSomeString() { return "someString" }
}
В обоих случаях я могу использовать класс следующим образом:
AppDomain appDomain = AppDomain.CreateDomain("AppDomain");
MyClass myObject = (MyClass)appDomain.CreateInstanceAndUnwrap(
typeof(MyClass).Assembly.FullName,
typeof(MyClass).FullName);
Console.WriteLine(myObject.GetSomeString());
Почему оба подхода имеют одинаковый эффект? В чем разница в обоих подходах? Когда я должен одобрять один подход к другому?
РЕДАКТИРОВАТЬ: На поверхности я знаю, что между обоими механизмами существуют различия, но если кто-то выскочил из куста и задал мне вопрос, я не мог дать ему правильный ответ. Вопросы - довольно открытые вопросы. Я надеялся, что кто-то сможет объяснить это лучше, чем я мог.