WritablePropertiesOnlyResolver

Namespace: Murder.Serialization
Assembly: Murder.dll

public class WritablePropertiesOnlyResolver : DefaultContractResolver, IContractResolver

Custom contract resolver for serializing our game assets. This currently filters out getters and filters in readonly fields.

Implements: DefaultContractResolver, IContractResolver

⭐ Constructors

public WritablePropertiesOnlyResolver()

⭐ Properties

DefaultMembersSearchFlags

public BindingFlags DefaultMembersSearchFlags { get; public set; }

Returns
BindingFlags

DynamicCodeGeneration

public bool DynamicCodeGeneration { get; }

Returns
bool

IgnoreIsSpecifiedMembers

public bool IgnoreIsSpecifiedMembers { get; public set; }

Returns
bool

IgnoreSerializableAttribute

public bool IgnoreSerializableAttribute { get; public set; }

Returns
bool

IgnoreSerializableInterface

public bool IgnoreSerializableInterface { get; public set; }

Returns
bool

IgnoreShouldSerializeMembers

public bool IgnoreShouldSerializeMembers { get; public set; }

Returns
bool

NamingStrategy

public NamingStrategy NamingStrategy { get; public set; }

Returns
NamingStrategy

SerializeCompilerGeneratedMembers

public bool SerializeCompilerGeneratedMembers { get; public set; }

Returns
bool

⭐ Methods

CreateConstructorParameters(ConstructorInfo, JsonPropertyCollection)

protected virtual IList<T> CreateConstructorParameters(ConstructorInfo constructor, JsonPropertyCollection memberProperties)

Parameters
constructor ConstructorInfo
memberProperties JsonPropertyCollection

Returns
IList<T>

CreateProperties(Type, MemberSerialization)

protected virtual IList<T> CreateProperties(Type type, MemberSerialization memberSerialization)

Only create properties that are able to be set. See: https://stackoverflow.com/a/18548894.

Parameters
type Type
memberSerialization MemberSerialization

Returns
IList<T>

CreateMemberValueProvider(MemberInfo)

protected virtual IValueProvider CreateMemberValueProvider(MemberInfo member)

Parameters
member MemberInfo

Returns
IValueProvider

CreateArrayContract(Type)

protected virtual JsonArrayContract CreateArrayContract(Type objectType)

Parameters
objectType Type

Returns
JsonArrayContract

CreateContract(Type)

protected virtual JsonContract CreateContract(Type objectType)

Parameters
objectType Type

Returns
JsonContract

ResolveContractConverter(Type)

protected virtual JsonConverter ResolveContractConverter(Type objectType)

Parameters
objectType Type

Returns
JsonConverter

CreateDictionaryContract(Type)

protected virtual JsonDictionaryContract CreateDictionaryContract(Type objectType)

Parameters
objectType Type

Returns
JsonDictionaryContract

CreateDynamicContract(Type)

protected virtual JsonDynamicContract CreateDynamicContract(Type objectType)

Parameters
objectType Type

Returns
JsonDynamicContract

CreateISerializableContract(Type)

protected virtual JsonISerializableContract CreateISerializableContract(Type objectType)

Parameters
objectType Type

Returns
JsonISerializableContract

CreateLinqContract(Type)

protected virtual JsonLinqContract CreateLinqContract(Type objectType)

Parameters
objectType Type

Returns
JsonLinqContract

CreateObjectContract(Type)

protected virtual JsonObjectContract CreateObjectContract(Type objectType)

Parameters
objectType Type

Returns
JsonObjectContract

CreatePrimitiveContract(Type)

protected virtual JsonPrimitiveContract CreatePrimitiveContract(Type objectType)

Parameters
objectType Type

Returns
JsonPrimitiveContract

CreateProperty(MemberInfo, MemberSerialization)

protected virtual JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)

While we ignore getter properties, we do not want to ignore readonly fields.

Parameters
member MemberInfo
memberSerialization MemberSerialization

Returns
JsonProperty

CreatePropertyFromConstructorParameter(JsonProperty, ParameterInfo)

protected virtual JsonProperty CreatePropertyFromConstructorParameter(JsonProperty matchingMemberProperty, ParameterInfo parameterInfo)

Parameters
matchingMemberProperty JsonProperty
parameterInfo ParameterInfo

Returns
JsonProperty

CreateStringContract(Type)

protected virtual JsonStringContract CreateStringContract(Type objectType)

Parameters
objectType Type

Returns
JsonStringContract

GetSerializableMembers(Type)

protected virtual List<T> GetSerializableMembers(Type t)

Make sure we fetch all the fields that define [ShowInEditor] in addition to JsonProperty.

Parameters
t Type

Returns
List<T>

ResolveDictionaryKey(string)

protected virtual string ResolveDictionaryKey(string dictionaryKey)

Parameters
dictionaryKey string

Returns
string

ResolveExtensionDataName(string)

protected virtual string ResolveExtensionDataName(string extensionDataName)

Parameters
extensionDataName string

Returns
string

ResolvePropertyName(string)

protected virtual string ResolvePropertyName(string propertyName)

Parameters
propertyName string

Returns
string

GetResolvedPropertyName(string)

public string GetResolvedPropertyName(string propertyName)

Parameters
propertyName string

Returns
string

ResolveContract(Type)

public virtual JsonContract ResolveContract(Type type)

Parameters
type Type

Returns
JsonContract