usingSystem;
namespace Newtonsoft.Json{
/// <summary>
/// Instructs the <see cref="JsonSerializer"/> to always serialize the member with the specified name.
/// </summary>
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
publicsealedclassJsonPropertyAttribute : Attribute
{
// yuck. can't set nullable properties on an attribute in C#
// have to use this approach to get an unset default state
internalNullValueHandling? _nullValueHandling;
internalDefaultValueHandling? _defaultValueHandling;
internalReferenceLoopHandling? _referenceLoopHandling;
internalObjectCreationHandling? _objectCreationHandling;
internalTypeNameHandling? _typeNameHandling;
internalbool? _isReference;
/// <summary>
/// Gets or sets the null value handling used when serializing this property.
/// </summary>
/// <value>The null value handling.</value>
publicNullValueHandlingNullValueHandling
{
get { return _nullValueHandling ?? default(NullValueHandling); }
set { _nullValueHandling = value; }
}
/// <summary>
/// Gets or sets the default value handling used when serializing this property.
/// </summary>
/// <value>The default value handling.</value>
publicDefaultValueHandlingDefaultValueHandling
{
get { return _defaultValueHandling ?? default(DefaultValueHandling); }
set { _defaultValueHandling = value; }
}
/// <summary>
/// Gets or sets the reference loop handling used when serializing this property.
/// </summary>
/// <value>The reference loop handling.</value>
publicReferenceLoopHandlingReferenceLoopHandling
{
get { return _referenceLoopHandling ?? default(ReferenceLoopHandling); }
set { _referenceLoopHandling = value; }
}
/// <summary>
/// Gets or sets the object creation handling used when deserializing this property.
/// </summary>
/// <value>The object creation handling.</value>
publicObjectCreationHandlingObjectCreationHandling
{
get { return _objectCreationHandling ?? default(ObjectCreationHandling); }
set { _objectCreationHandling = value; }
}
/// <summary>
/// Gets or sets the type name handling used when serializing this property.
/// </summary>
/// <value>The type name handling.</value>
publicTypeNameHandlingTypeNameHandling
{
get { return _typeNameHandling ?? default(TypeNameHandling); }
set { _typeNameHandling = value; }
}
/// <summary>
/// Gets or sets whether this property's value is serialized as a reference.
/// </summary>
/// <value>Whether this property's value is serialized as a reference.</value>
publicbool IsReference
{
get { return _isReference ?? default(bool); }
set { _isReference = value; }
}
/// <summary>
/// Gets or sets the name of the property.
/// </summary>
/// <value>The name of the property.</value>
publicstring PropertyName { get; set; }
/// <summary>
/// Gets or sets a value indicating whether this property is required.
/// </summary>
/// <value>
/// A value indicating whether this property is required.
/// </value>
publicRequiredRequired { get; set; }
/// <summary>
/// Initializes a new instance of the <see cref="JsonPropertyAttribute"/> class.
/// </summary>
publicJsonPropertyAttribute()
{
}
/// <summary>
/// Initializes a new instance of the <see cref="JsonPropertyAttribute"/> class with the specified name.
/// </summary>
/// <param name="propertyName">Name of the property.</param>
publicJsonPropertyAttribute(string propertyName)
{
PropertyName = propertyName;
}
}
}