2011-01-05 71 views
6

我還沒有很多與遠程處理,所以原諒這個相當基本的問題,如果我從一個抽象類派生一個類標記爲[可序列化](用於跨數據傳遞數據),另一方得到實際的重寫實現?即多態性的工作遠程/ Serializable?[Serializable]是否適用於繼承類?

我需要建立對對方的克隆,而不是原來的操作使MarshalByRef不是一個選項...

回答

2

是當你反序列化類型,同一類型的遠程域重組。

可以通過使用IObjectReference圖案控制反序列化類型:

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iobjectreference.aspx

+0

這是如何工作的?我的意思是我會理解Serializable是如何工作的,如果它只是在另一側實例化相同類型並複製所有數據,但是如果我有一些抽象類說BirdBase,另一邊繼承並傳遞一個Bird:BirdBase,它會有發送實際的代碼..這不是一個安全問題嗎? – Homde 2011-01-06 00:35:21

+0

雙方都必須能夠訪問序列化類型及其包含的所有內容。反序列化器將嘗試加載序列化的最終類型的對象。如果失敗,則拋出異常。 – 2011-01-06 02:38:19

+0

那麼,這不起作用:/一方只知道基類,另一方覆蓋它 – Homde 2011-01-06 05:54:15

3

最簡單的方式看到,[序列化]不被繼承是按F12和看「繼承=假」在AttributeUsage。更難的選擇是RTFM在http://msdn.microsoft.com/en-us/library/bcfsa90a.aspx

本質上你需要將所有的類標記爲可序列化的,並且它們將被正確地反序列化。