Chciałbym użyć obiektu w AppDomains.Użyj atrybutu [Serializable] lub podklasy z MarshalByRefObject?
W tym celu można użyć [Serializeable] atrybut:
[Serializable]
class MyClass
{
public string GetSomeString() { return "someString" }
}
lub podklasy z MarshalByRefObject:
class MyClass: MarshalByRefObject
{
public string GetSomeString() { return "someString" }
}
W obu przypadkach można użyć klasy tak:
AppDomain appDomain = AppDomain.CreateDomain("AppDomain");
MyClass myObject = (MyClass)appDomain.CreateInstanceAndUnwrap(
typeof(MyClass).Assembly.FullName,
typeof(MyClass).FullName);
Console.WriteLine(myObject.GetSomeString());
Dlaczego oba podejścia wydają się mieć taki sam efekt? Jaka jest różnica w obu podejściach? Kiedy powinienem faworyzować jedno podejście do drugiego?
EDYCJA: Na powierzchni wiem, że istnieją różnice między oboma mechanizmami, ale jeśli ktoś wyskoczył z krzaka i zadał mi pytanie, nie mogłem mu dać właściwej odpowiedzi. Pytania są dość otwarte. Miałem nadzieję, że ktoś może wyjaśnić to lepiej niż ja.
Dobrze ... zmieniłem pytanie. To * wydaje się *, ponieważ oba podejścia mają taki sam efekt. –