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());
両方のアプローチが同じ効果があるように見えるのはなぜですか? 両方のアプローチの違いは何ですか?あるアプローチを他のアプローチよりも優先する必要があるのはいつですか?
編集: 表面的には、両方のメカニズムに違いがあることはわかっていますが、誰かが茂みから飛び出して私に質問をした場合、私は彼に適切な答えを与えることができませんでした. 質問はかなりオープンな質問です。誰かが私よりもうまく説明できることを願っていました。