<Compile Include="$(TestSourceFolder)SerializationTestTypes\DCRSampleType.cs" />
<Compile Include="$(TestSourceFolder)SerializationTestTypes\DCRTypeLibrary.cs" />
<Compile Include="$(TestSourceFolder)SerializationTestTypes\Primitives.cs" />
- <Compile Include="$(CommonTestPath)System\IO\TempFile.cs"
- Link="Common\System\IO\TempFile.cs" />
- <Compile Include="$(CommonTestPath)System\Runtime\Serialization\DataContractSerializerHelper.cs"
- Link="Common\System\Runtime\Serialization\DataContractSerializerHelper.cs" />
+ <Compile Include="$(CommonTestPath)System\IO\TempFile.cs" Link="Common\System\IO\TempFile.cs" />
+ <Compile Include="$(CommonTestPath)System\Runtime\Serialization\DataContractSerializerHelper.cs" Link="Common\System\Runtime\Serialization\DataContractSerializerHelper.cs" />
<Compile Include="$(CommonTestPath)System\Runtime\Serialization\Utils.cs" />
<Compile Include="$(TestSourceFolder)SerializationTestTypes\ObjRefSample.cs" />
<Compile Include="SerializationTestTypes\Collections.cs" />
<Compile Include="SerializationTestTypes\SampleIObjectRef.cs" />
<Compile Include="SerializationTestTypes\SampleTypes.cs" />
<Compile Include="SerializationTestTypes\SelfRefAndCycles.cs" />
+ <Compile Include="XmlSerializerTests.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(LibrariesProjectRoot)System.CodeDom\src\System.CodeDom.csproj" />
--- /dev/null
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using System;
+using System.IO;
+using System.Xml;
+using System.Xml.Serialization;
+using Xunit;
+
+public static class XmlSerializerTests
+{
+
+ public const string FakeNS = "http://example.com/XmlSerializerTests";
+
+ [Fact]
+ public static void FlagEnums_With_Different_Namespaces()
+ {
+ StringWriter sw = new StringWriter();
+ XmlTextWriter xml = new XmlTextWriter(sw);
+
+ TwoClasses twoClasses = new TwoClasses
+ {
+ First = new FirstClass { TestingEnumValues = TestEnum.First },
+ Second = new SecondClass { TestingEnumValues = TestEnum.Second }
+ };
+
+ // 43675 - This line throws with inconsistent Flag.type/namespace usage
+ XmlSerializer ser = new XmlSerializer(typeof(TwoClasses));
+
+ ser.Serialize(xml, twoClasses);
+ string s = sw.ToString();
+
+ Assert.Contains("enumtest", s);
+ }
+
+ [Flags]
+ public enum TestEnum
+ {
+ First = 1,
+ Second = 2
+ }
+
+ public class FirstClass
+ {
+ [XmlAttribute("enumtest")]
+ public TestEnum TestingEnumValues;
+ }
+
+ public class SecondClass
+ {
+ [XmlAttribute("enumtest", Namespace = XmlSerializerTests.FakeNS)]
+ public TestEnum TestingEnumValues;
+ }
+
+ public class TwoClasses
+ {
+ public TwoClasses() { }
+
+ [XmlElement("first")]
+ public FirstClass First;
+
+ [XmlElement("second", Namespace = XmlSerializerTests.FakeNS)]
+ public SecondClass Second;
+ }
+
+}