Files
archived-discord-bot/CompatApiClient/Formatters/JsonContractResolver.cs
13xforever 7fd7d09973 RPCS3 Compatibility Bot reimplemented in C# for .NET Core
RPCS3 Compatibility Bot reimplemented in C# for .NET Core

Current status of this PR:
* tested and targeted for .NET Core 2.1
* all functionality is either on par or improved compared to the python version
* compatibility with current bot.db should be preserved in all upgrade scenarios
* some bot management commands were changed (now under !sudo bot)
* standard help generator for the new discord client is ... different;
  compatibility with old format could be restored through custom formatter if needed
* everything has been split in more loosely tied components for easier extensibility and maintenance
* log parsing has been rewritten and should work ~2x as fast
2018-07-20 09:22:28 +02:00

32 lines
986 B
C#

using System;
using System.Reflection;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
namespace CompatApiClient
{
public class JsonContractResolver : DefaultContractResolver
{
private readonly Func<string, string> propertyNameResolver;
public JsonContractResolver()
: this(NamingStyles.Dashed)
{
}
public JsonContractResolver(Func<string, string> propertyNameResolver)
{
if (propertyNameResolver == null)
throw new ArgumentNullException(nameof(propertyNameResolver));
this.propertyNameResolver = propertyNameResolver;
}
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
var property = base.CreateProperty(member, memberSerialization);
property.PropertyName = propertyNameResolver(property.PropertyName);
return property;
}
}
}