I say this because even though it is passing messages those messages can still be polymorphic. if polymorphism was an issue I would expect that the DataContractSerializer would not accept ANY object that derived from any other (well maybe ecluding object).