Bug 18059 - DataContractSerializer does not match .NET behavior when serializing a type nested within a F# module
Summary: DataContractSerializer does not match .NET behavior when serializing a type n...
Status: NEW
Alias: None
Product: Class Libraries
Classification: Mono
Component: WCF assemblies (show other bugs)
Version: 3.2.x
Hardware: Other Linux
: --- normal
Target Milestone: Untriaged
Assignee: Bugzilla
URL:
Depends on:
Blocks:
 
Reported: 2014-02-27 16:19 UTC by Ryan Riley
Modified: 2014-02-27 16:20 UTC (History)
2 users (show)

See Also:
Tags:
Is this bug a regression?: ---
Last known good build:


Attachments

Description Ryan Riley 2014-02-27 16:19:05 UTC
F# adds a Program class declaration to the code in a F# module. In .NET, the DataContractSerializer includes the module name, which is compiled as a static class, in the serialized type name. In Mono 3.2.7, I found that the DataContractSerializer ignored this parent class. Extracting the code to another file and keeping the nested TestType works the same in both Mono and .NET.

This test built successfully on .NET but failed in the Travis CI build. F# injects a Program module into the Program.fs file:
https://github.com/frank-fs/frank/blob/39e2156bf139b3d905bf82005d84f01176e4d35f/tests/Frank.Tests/Program.fs#L97
https://travis-ci.org/frank-fs/frank/builds/19751463#L325

Moving these to a nested type in another file worked also failed. .NET produced Tests.TestType and Mono continued to produce only TestType:
https://github.com/frank-fs/frank/blob/6fad80ff6bc1f0c57848cc854637d822facb7358/tests/Frank.Tests/Tests.fs#L94
https://travis-ci.org/frank-fs/frank/builds/19752913#L347

I moved the nested type directly under the namespace in order to make these consistent:
https://github.com/frank-fs/frank/blob/master/tests/Frank.Tests/Tests.fs#L99
https://travis-ci.org/frank-fs/frank/builds/19757412#L311

Note You need to log in before you can comment on or make changes to this bug.