DataContract serialization should respect base data contract's IsReference. On MS.NET it is respected. On Mono it is not.
Check the attached app. Compile it with: mcs Program.cs -r:System.Runtime.Serialization
Created attachment 4561 [details]
App that shows the bug
This is my solution:
I return true on first base-data-contract with IsReference=true, because it's forbidden on ms.net to redefine IsReference already defined in base-data-contract (it throws an exception on explicitly set IsReference with changed value in derived class)