Tôi muốn sử dụng một đối tượng trên AppDomains.Sử dụng thuộc tính [Serializable] hoặc subclassing từ MarshalByRefObject?
Đối với điều này tôi có thể sử dụng [Serializeable] thuộc tính:
[Serializable]
class MyClass
{
public string GetSomeString() { return "someString" }
}
Hoặc lớp con từ MarshalByRefObject:
class MyClass: MarshalByRefObject
{
public string GetSomeString() { return "someString" }
}
Trong cả hai trường hợp tôi có thể sử dụng lớp như thế này:
AppDomain appDomain = AppDomain.CreateDomain("AppDomain");
MyClass myObject = (MyClass)appDomain.CreateInstanceAndUnwrap(
typeof(MyClass).Assembly.FullName,
typeof(MyClass).FullName);
Console.WriteLine(myObject.GetSomeString());
Tại sao cả hai cách tiếp cận dường như có cùng tác dụng? Sự khác biệt trong cả hai cách tiếp cận là gì? Khi nào tôi nên ưu tiên cách tiếp cận này qua phương pháp khác?
EDIT: Trên bề mặt tôi biết rằng có sự khác biệt giữa cả hai cơ chế, nhưng nếu ai đó nhảy ra khỏi bụi rậm và hỏi tôi câu hỏi tôi không thể trả lời đúng. Các câu hỏi là những câu hỏi khá cởi mở. Tôi hy vọng rằng ai đó có thể giải thích nó tốt hơn tôi có thể làm.
Ok ... đã thay đổi câu hỏi. Nó * có vẻ * vì cả hai cách tiếp cận đều có cùng tác dụng. –