mirror of
https://github.com/Jetsparrow/karmabot.git
synced 2026-01-21 09:06:09 +03:00
45 lines
1.4 KiB
C#
45 lines
1.4 KiB
C#
using System.Reflection;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Serialization;
|
|
|
|
// ReSharper disable once CheckNamespace
|
|
namespace JsonNet.PrivateSettersContractResolvers
|
|
{
|
|
public class PrivateSetterContractResolver : DefaultContractResolver
|
|
{
|
|
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
|
|
{
|
|
var jProperty = base.CreateProperty(member, memberSerialization);
|
|
if (jProperty.Writable)
|
|
return jProperty;
|
|
|
|
jProperty.Writable = member.IsPropertyWithSetter();
|
|
|
|
return jProperty;
|
|
}
|
|
}
|
|
|
|
public class PrivateSetterCamelCasePropertyNamesContractResolver : CamelCasePropertyNamesContractResolver
|
|
{
|
|
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
|
|
{
|
|
var jProperty = base.CreateProperty(member, memberSerialization);
|
|
if (jProperty.Writable)
|
|
return jProperty;
|
|
|
|
jProperty.Writable = member.IsPropertyWithSetter();
|
|
|
|
return jProperty;
|
|
}
|
|
}
|
|
|
|
internal static class MemberInfoExtensions
|
|
{
|
|
internal static bool IsPropertyWithSetter(this MemberInfo member)
|
|
{
|
|
var property = member as PropertyInfo;
|
|
|
|
return property?.GetSetMethod(true) != null;
|
|
}
|
|
}
|
|
} |