using System; namespace DPumpHydr.WinFrmUI.WenSkin.Json { /// /// Instructs the to always serialize the member with the specified name. /// [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)] public sealed class JsonPropertyAttribute : Attribute { internal NullValueHandling? _nullValueHandling; internal DefaultValueHandling? _defaultValueHandling; internal ReferenceLoopHandling? _referenceLoopHandling; internal ObjectCreationHandling? _objectCreationHandling; internal TypeNameHandling? _typeNameHandling; internal bool? _isReference; internal int? _order; internal Required? _required; internal bool? _itemIsReference; internal ReferenceLoopHandling? _itemReferenceLoopHandling; internal TypeNameHandling? _itemTypeNameHandling; /// /// Gets or sets the used when serializing the property's collection items. /// /// The collection's items . public Type ItemConverterType { get; set; } /// /// The parameter list to use when constructing the described by ItemConverterType. /// If null, the default constructor is used. /// When non-null, there must be a constructor defined in the that exactly matches the number, /// order, and type of these parameters. /// /// /// [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] /// public object[] ItemConverterParameters { get; set; } /// /// Gets or sets the of the . /// /// The of the . public Type NamingStrategyType { get; set; } /// /// The parameter list to use when constructing the described by NamingStrategyType. /// If null, the default constructor is used. /// When non-null, there must be a constructor defined in the that exactly matches the number, /// order, and type of these parameters. /// /// /// [JsonProperty(NamingStrategyType = typeof(MyNamingStrategy), NamingStrategyParameters = new object[] { 123, "Four" })] /// public object[] NamingStrategyParameters { get; set; } /// /// Gets or sets the null value handling used when serializing this property. /// /// The null value handling. public NullValueHandling NullValueHandling { get { return _nullValueHandling ?? NullValueHandling.Include; } set { _nullValueHandling = value; } } /// /// Gets or sets the default value handling used when serializing this property. /// /// The default value handling. public DefaultValueHandling DefaultValueHandling { get { return _defaultValueHandling ?? DefaultValueHandling.Include; } set { _defaultValueHandling = value; } } /// /// Gets or sets the reference loop handling used when serializing this property. /// /// The reference loop handling. public ReferenceLoopHandling ReferenceLoopHandling { get { return _referenceLoopHandling ?? ReferenceLoopHandling.Error; } set { _referenceLoopHandling = value; } } /// /// Gets or sets the object creation handling used when deserializing this property. /// /// The object creation handling. public ObjectCreationHandling ObjectCreationHandling { get { return _objectCreationHandling ?? ObjectCreationHandling.Auto; } set { _objectCreationHandling = value; } } /// /// Gets or sets the type name handling used when serializing this property. /// /// The type name handling. public TypeNameHandling TypeNameHandling { get { return _typeNameHandling ?? TypeNameHandling.None; } set { _typeNameHandling = value; } } /// /// Gets or sets whether this property's value is serialized as a reference. /// /// Whether this property's value is serialized as a reference. public bool IsReference { get { return _isReference ?? false; } set { _isReference = value; } } /// /// Gets or sets the order of serialization of a member. /// /// The numeric order of serialization. public int Order { get { return _order ?? 0; } set { _order = value; } } /// /// Gets or sets a value indicating whether this property is required. /// /// /// A value indicating whether this property is required. /// public Required Required { get { return _required ?? Required.Default; } set { _required = value; } } /// /// Gets or sets the name of the property. /// /// The name of the property. public string PropertyName { get; set; } /// /// Gets or sets the the reference loop handling used when serializing the property's collection items. /// /// The collection's items reference loop handling. public ReferenceLoopHandling ItemReferenceLoopHandling { get { return _itemReferenceLoopHandling ?? ReferenceLoopHandling.Error; } set { _itemReferenceLoopHandling = value; } } /// /// Gets or sets the the type name handling used when serializing the property's collection items. /// /// The collection's items type name handling. public TypeNameHandling ItemTypeNameHandling { get { return _itemTypeNameHandling ?? TypeNameHandling.None; } set { _itemTypeNameHandling = value; } } /// /// Gets or sets whether this property's collection items are serialized as a reference. /// /// Whether this property's collection items are serialized as a reference. public bool ItemIsReference { get { return _itemIsReference ?? false; } set { _itemIsReference = value; } } /// /// Initializes a new instance of the class. /// public JsonPropertyAttribute() { } /// /// Initializes a new instance of the class with the specified name. /// /// Name of the property. public JsonPropertyAttribute(string propertyName) { PropertyName = propertyName; } } }