Работает ли [Serializable] для унаследованных классов? - PullRequest
6 голосов
/ 06 января 2011

Я мало работал с удаленным взаимодействием, поэтому извините за этот довольно рудиментарный вопрос: если я получаю класс из абстрактного класса, помеченного как [Serializable] (для передачи данных через домен приложения), получит ли другая сторона фактическое переопределение? реализация? т.е. работает ли полиморфизм над удаленным доступом / сериализуемым?

Мне нужно создать клон с другой стороны, а не работать с оригиналом, поэтому MarshalByRef не подходит ...

Ответы [ 2 ]

3 голосов
/ 06 января 2011

Самый простой способ увидеть, что [Serializable] не наследуется, это нажать F12 и увидеть «Inherited = false» в AttributeUsage. Более сложный вариант - RTFM на http://msdn.microsoft.com/en-us/library/bcfsa90a.aspx.

По сути, вам нужно пометить все ваши классы как сериализуемые, и они будут десериализованы должным образом.

2 голосов
/ 06 января 2011

Да, когда вы десериализуете тип, этот же тип восстанавливается в удаленном домене.

Вы можете управлять десериализованным типом, используя шаблон IObjectReference:

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

...