Me gustaría usar un objeto en AppDomains.Utilice el atributo [Serializable] o la creación de subclases de MarshalByRefObject?
Para esto se puede utilizar el atributo [Serializeable]:
[Serializable]
class MyClass
{
public string GetSomeString() { return "someString" }
}
o subclase de MarshalByRefObject:
class MyClass: MarshalByRefObject
{
public string GetSomeString() { return "someString" }
}
En ambos casos puedo utilizar la clase como esta:
AppDomain appDomain = AppDomain.CreateDomain("AppDomain");
MyClass myObject = (MyClass)appDomain.CreateInstanceAndUnwrap(
typeof(MyClass).Assembly.FullName,
typeof(MyClass).FullName);
Console.WriteLine(myObject.GetSomeString());
¿Por qué ambos enfoques parecen tener el mismo efecto? ¿Cuál es la diferencia en ambos enfoques? ¿Cuándo debería favorecer el enfoque sobre el otro?
EDIT: En la superficie, sé que hay diferencias entre ambos mecanismos, pero si alguien salta de un arbusto y me hace la pregunta, no podría darle una respuesta adecuada. Las preguntas son preguntas bastante abiertas. Esperaba que alguien pudiera explicarlo mejor de lo que podía hacerlo.
Ok ... han cambiado la pregunta. Parece * ya que ambos enfoques tienen el mismo efecto. –