Skip to content
Snippets Groups Projects
Commit ba9d7ff6 authored by Frederik Carlier's avatar Frederik Carlier
Browse files

If the C# enum name does not match the JSON value, add an EnumMember attribute...

If the C# enum name does not match the JSON value, add an EnumMember attribute to ensure the mapping is done properly
parent 8c88415c
No related branches found
No related tags found
No related merge requests found
......@@ -38,14 +38,12 @@
<AssemblyOriginatorKeyFile>MasterDevs.ChromeDevTools.snk</AssemblyOriginatorKeyFile>
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Net.Http">
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Net.Http.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
......
{
{
"frameworks": {
"net45": {}
},
"runtimes": {
"win": {}
},
"dependencies": {
"Newtonsoft.Json": "9.0.1"
}
}
\ No newline at end of file
......@@ -21,7 +21,8 @@
"System.Diagnostics.Process": "4.1.0",
"System.Runtime.InteropServices": "4.1.0",
"System.Net.Http": "4.1.0",
"System.Threading.Thread": "4.0.0"
"System.Threading.Thread": "4.0.0",
"System.Runtime.Serialization.Primitives": "4.1.1"
}
},
"net45": {
......@@ -29,7 +30,8 @@
"WebSocket4Net": "0.14.1"
},
"frameworkAssemblies": {
"System.Net.Http": "4.0.0.0"
"System.Net.Http": "4.0.0.0",
"System.Runtime.Serialization": "4.0.0.0"
}
}
}
......
......@@ -35,6 +35,10 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
</ItemGroup>
<Choose>
......@@ -52,6 +56,7 @@
<ItemGroup>
<Compile Include="CommandResponseFactoryTests.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SerializationTests.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ChromeDevTools\MasterDevs.ChromeDevTools.csproj">
......@@ -60,6 +65,7 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
<None Include="response-1.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
......
using MasterDevs.ChromeDevTools.Protocol.Chrome.DOM;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MasterDevs.ChromeDevTools.Tests
{
[TestClass]
public class SerializationTests
{
[TestMethod]
public void ShadowRootTypeTest()
{
var value = JsonConvert.DeserializeObject<ShadowRootType>("\"user-agent\"");
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net461" />
</packages>
\ No newline at end of file
......@@ -474,7 +474,10 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
{
var enumName = type.Name;
StringBuilder sb = new StringBuilder();
sb.AppendFormat("using MasterDevs.ChromeDevTools;");
sb.AppendLine("using MasterDevs.ChromeDevTools;");
sb.AppendLine("using Newtonsoft.Json;");
sb.AppendLine("using Newtonsoft.Json.Converters;");
sb.AppendLine("using System.Runtime.Serialization;");
sb.AppendLine();
sb.AppendLine();
sb.AppendFormat("namespace {0}.{1}.{2}", RootNamespace, ns, domainDirectoryInfo.Name);
......@@ -483,11 +486,18 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
sb.AppendFormat("\t/// {0}", type.Description);
sb.AppendLine();
sb.AppendLine("\t/// </summary>");
sb.AppendLine("\t[JsonConverter(typeof(StringEnumConverter))]");
sb.AppendFormat("\tpublic enum {0}", enumName);
sb.AppendLine();
sb.AppendLine("\t{");
foreach (var enumValueName in type.Enum)
{
if (enumValueName.Contains("-"))
{
sb.AppendFormat("\t\t\t[EnumMember(Value = \"{0}\")]", enumValueName);
sb.AppendLine();
}
sb.AppendFormat("\t\t\t{0},", ToCamelCase(enumValueName.Replace("-", "_")));
sb.AppendLine();
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment