2012-01-10 43 views
3

我正在使用AppDomain的第一個項目,我想知道當一個對象從MarshalByRefObject派生並且還標記了[Serializable]時會發生什麼?當一個對象從MarshalByRefObject派生並且被標記爲[Serializable]時會發生什麼?

例如:

[Serializable] 
public class DummyClass: MarshalByRefObject 
{ 

} 
+0

它變成可序列化?你的意思是「發生了什麼」?您是否閱讀過這兩項文件? – 2012-01-10 06:05:55

+2

@CodyGray:如果您詢問'會發生什麼?'那麼你並不熟悉.NET遠程處理。 – leppie 2012-01-10 06:16:12

+2

@Ravi:我認爲最好的辦法是設置一個小型的服務器場景並測試它:)也許從MarshalByRefObject派生出來的將會否定序列化。 – leppie 2012-01-10 06:19:00

回答

1

它被引用編組,但仍然被系列化其他使用情況進行序列化。這裏有一個實現細節,值得注意的是:爲遠程處理序列化的格式化程序使用SurrogateSelector,它將爲其串行化的任何MarshalByRefObject生成代理,因此序列化仍將導致通過引用進行編組。其他序列化使用不會有那SurrogateSelector,所以不會有這種效果。

+0

這裏編組是什麼意思,請你詳細說明一下吧? – 2015-12-15 17:18:18

+0

@EhsanSajjad這是一個單獨的問題,而不是對這個問題和答案的評論。一個可能重複在http://stackoverflow.com/questions/5600761/what-is-marshalling-what-is-happening-when-something-is-marshalled,當然應該由谷歌搜索來回答。 – 2015-12-15 17:25:20

+0

我幾秒鐘前問:http://stackoverflow.com/questions/34295644/what-does-actually-marshalbyref-means – 2015-12-15 17:26:49

相關問題