我想跨AppDomains使用一個對象。使用MarshalByRefObject的[Serializable]屬性或子類?
爲此,我可以使用[可序列化]屬性:
[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());
爲什麼這兩種方法似乎都有相同的效果?兩種方法有什麼不同?我應該在什麼時候採用這種方法呢?
編輯:在表面上我知道這兩種機制之間存在差異,但如果有人跳出布什並問我這個問題,我不能給他一個正確的答案。這些問題是相當開放的問題。我希望有人能比我更好地解釋它。
好的......改變了問題。它似乎*因爲兩種方法都具有相同的效果。 – 2009-03-01 12:25:58