diff options
author | Jie Luo <anandolee@gmail.com> | 2017-02-28 10:51:19 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-28 10:51:19 -0800 |
commit | 606cb7ed2c55d5bda8aad2c88e5b0af09230fb3b (patch) | |
tree | 1bc5c982a660f16604317f27365e769b3710b3ca /csharp/src/Google.Protobuf/JsonFormatter.cs | |
parent | d41c47fff992a7729a36ca61f8090aa40596e948 (diff) | |
download | protobuf-606cb7ed2c55d5bda8aad2c88e5b0af09230fb3b.tar.gz protobuf-606cb7ed2c55d5bda8aad2c88e5b0af09230fb3b.tar.bz2 protobuf-606cb7ed2c55d5bda8aad2c88e5b0af09230fb3b.zip |
There might be duplicated enum values when allow_alias is true. Add PreferredAlias into OriginalNameAttribute to remove the duplication (#2727)
Diffstat (limited to 'csharp/src/Google.Protobuf/JsonFormatter.cs')
-rwxr-xr-x | csharp/src/Google.Protobuf/JsonFormatter.cs | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/csharp/src/Google.Protobuf/JsonFormatter.cs b/csharp/src/Google.Protobuf/JsonFormatter.cs index 05282775..90c2e937 100755 --- a/csharp/src/Google.Protobuf/JsonFormatter.cs +++ b/csharp/src/Google.Protobuf/JsonFormatter.cs @@ -835,6 +835,9 @@ namespace Google.Protobuf // TODO: Consider adding functionality to TypeExtensions to avoid this difference. private static Dictionary<object, string> GetNameMapping(System.Type enumType) => enumType.GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static) + .Where(f => (f.GetCustomAttributes(typeof(OriginalNameAttribute), false) + .FirstOrDefault() as OriginalNameAttribute) + ?.PreferredAlias ?? true) .ToDictionary(f => f.GetValue(null), f => (f.GetCustomAttributes(typeof(OriginalNameAttribute), false) .FirstOrDefault() as OriginalNameAttribute) @@ -844,6 +847,8 @@ namespace Google.Protobuf private static Dictionary<object, string> GetNameMapping(System.Type enumType) => enumType.GetTypeInfo().DeclaredFields .Where(f => f.IsStatic) + .Where(f => f.GetCustomAttributes<OriginalNameAttribute>() + .FirstOrDefault()?.PreferredAlias ?? true) .ToDictionary(f => f.GetValue(null), f => f.GetCustomAttributes<OriginalNameAttribute>() .FirstOrDefault() |