Statistics
| Branch: | Revision:

root / trunk / Libraries / Json40r2 / Source / Src / Newtonsoft.Json / JsonPropertyAttribute.cs @ ed0be341

History | View | Annotate | Download (3.7 kB)

1 d78cbf09 Panagiotis Kanavos
using System;
2 d78cbf09 Panagiotis Kanavos
3 d78cbf09 Panagiotis Kanavos
namespace Newtonsoft.Json
4 d78cbf09 Panagiotis Kanavos
{
5 d78cbf09 Panagiotis Kanavos
  /// <summary>
6 d78cbf09 Panagiotis Kanavos
  /// Instructs the <see cref="JsonSerializer"/> to always serialize the member with the specified name.
7 d78cbf09 Panagiotis Kanavos
  /// </summary>
8 d78cbf09 Panagiotis Kanavos
  [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
9 d78cbf09 Panagiotis Kanavos
  public sealed class JsonPropertyAttribute : Attribute
10 d78cbf09 Panagiotis Kanavos
  {
11 d78cbf09 Panagiotis Kanavos
    // yuck. can't set nullable properties on an attribute in C#
12 d78cbf09 Panagiotis Kanavos
    // have to use this approach to get an unset default state
13 d78cbf09 Panagiotis Kanavos
    internal NullValueHandling? _nullValueHandling;
14 d78cbf09 Panagiotis Kanavos
    internal DefaultValueHandling? _defaultValueHandling;
15 d78cbf09 Panagiotis Kanavos
    internal ReferenceLoopHandling? _referenceLoopHandling;
16 d78cbf09 Panagiotis Kanavos
    internal ObjectCreationHandling? _objectCreationHandling;
17 d78cbf09 Panagiotis Kanavos
    internal TypeNameHandling? _typeNameHandling;
18 d78cbf09 Panagiotis Kanavos
    internal bool? _isReference;
19 d78cbf09 Panagiotis Kanavos
20 d78cbf09 Panagiotis Kanavos
    /// <summary>
21 d78cbf09 Panagiotis Kanavos
    /// Gets or sets the null value handling used when serializing this property.
22 d78cbf09 Panagiotis Kanavos
    /// </summary>
23 d78cbf09 Panagiotis Kanavos
    /// <value>The null value handling.</value>
24 d78cbf09 Panagiotis Kanavos
    public NullValueHandling NullValueHandling
25 d78cbf09 Panagiotis Kanavos
    {
26 d78cbf09 Panagiotis Kanavos
      get { return _nullValueHandling ?? default(NullValueHandling); }
27 d78cbf09 Panagiotis Kanavos
      set { _nullValueHandling = value; }
28 d78cbf09 Panagiotis Kanavos
    }
29 d78cbf09 Panagiotis Kanavos
30 d78cbf09 Panagiotis Kanavos
    /// <summary>
31 d78cbf09 Panagiotis Kanavos
    /// Gets or sets the default value handling used when serializing this property.
32 d78cbf09 Panagiotis Kanavos
    /// </summary>
33 d78cbf09 Panagiotis Kanavos
    /// <value>The default value handling.</value>
34 d78cbf09 Panagiotis Kanavos
    public DefaultValueHandling DefaultValueHandling
35 d78cbf09 Panagiotis Kanavos
    {
36 d78cbf09 Panagiotis Kanavos
      get { return _defaultValueHandling ?? default(DefaultValueHandling); }
37 d78cbf09 Panagiotis Kanavos
      set { _defaultValueHandling = value; }
38 d78cbf09 Panagiotis Kanavos
    }
39 d78cbf09 Panagiotis Kanavos
40 d78cbf09 Panagiotis Kanavos
    /// <summary>
41 d78cbf09 Panagiotis Kanavos
    /// Gets or sets the reference loop handling used when serializing this property.
42 d78cbf09 Panagiotis Kanavos
    /// </summary>
43 d78cbf09 Panagiotis Kanavos
    /// <value>The reference loop handling.</value>
44 d78cbf09 Panagiotis Kanavos
    public ReferenceLoopHandling ReferenceLoopHandling
45 d78cbf09 Panagiotis Kanavos
    {
46 d78cbf09 Panagiotis Kanavos
      get { return _referenceLoopHandling ?? default(ReferenceLoopHandling); }
47 d78cbf09 Panagiotis Kanavos
      set { _referenceLoopHandling = value; }
48 d78cbf09 Panagiotis Kanavos
    }
49 d78cbf09 Panagiotis Kanavos
50 d78cbf09 Panagiotis Kanavos
    /// <summary>
51 d78cbf09 Panagiotis Kanavos
    /// Gets or sets the object creation handling used when deserializing this property.
52 d78cbf09 Panagiotis Kanavos
    /// </summary>
53 d78cbf09 Panagiotis Kanavos
    /// <value>The object creation handling.</value>
54 d78cbf09 Panagiotis Kanavos
    public ObjectCreationHandling ObjectCreationHandling
55 d78cbf09 Panagiotis Kanavos
    {
56 d78cbf09 Panagiotis Kanavos
      get { return _objectCreationHandling ?? default(ObjectCreationHandling); }
57 d78cbf09 Panagiotis Kanavos
      set { _objectCreationHandling = value; }
58 d78cbf09 Panagiotis Kanavos
    }
59 d78cbf09 Panagiotis Kanavos
60 d78cbf09 Panagiotis Kanavos
    /// <summary>
61 d78cbf09 Panagiotis Kanavos
    /// Gets or sets the type name handling used when serializing this property.
62 d78cbf09 Panagiotis Kanavos
    /// </summary>
63 d78cbf09 Panagiotis Kanavos
    /// <value>The type name handling.</value>
64 d78cbf09 Panagiotis Kanavos
    public TypeNameHandling TypeNameHandling
65 d78cbf09 Panagiotis Kanavos
    {
66 d78cbf09 Panagiotis Kanavos
      get { return _typeNameHandling ?? default(TypeNameHandling); }
67 d78cbf09 Panagiotis Kanavos
      set { _typeNameHandling = value; }
68 d78cbf09 Panagiotis Kanavos
    }
69 d78cbf09 Panagiotis Kanavos
70 d78cbf09 Panagiotis Kanavos
    /// <summary>
71 d78cbf09 Panagiotis Kanavos
    /// Gets or sets whether this property's value is serialized as a reference.
72 d78cbf09 Panagiotis Kanavos
    /// </summary>
73 d78cbf09 Panagiotis Kanavos
    /// <value>Whether this property's value is serialized as a reference.</value>
74 d78cbf09 Panagiotis Kanavos
    public bool IsReference
75 d78cbf09 Panagiotis Kanavos
    {
76 d78cbf09 Panagiotis Kanavos
      get { return _isReference ?? default(bool); }
77 d78cbf09 Panagiotis Kanavos
      set { _isReference = value; }
78 d78cbf09 Panagiotis Kanavos
    }
79 d78cbf09 Panagiotis Kanavos
80 d78cbf09 Panagiotis Kanavos
    /// <summary>
81 d78cbf09 Panagiotis Kanavos
    /// Gets or sets the name of the property.
82 d78cbf09 Panagiotis Kanavos
    /// </summary>
83 d78cbf09 Panagiotis Kanavos
    /// <value>The name of the property.</value>
84 d78cbf09 Panagiotis Kanavos
    public string PropertyName { get; set; }
85 d78cbf09 Panagiotis Kanavos
86 d78cbf09 Panagiotis Kanavos
    /// <summary>
87 d78cbf09 Panagiotis Kanavos
    /// Gets or sets a value indicating whether this property is required.
88 d78cbf09 Panagiotis Kanavos
    /// </summary>
89 d78cbf09 Panagiotis Kanavos
    /// <value>
90 d78cbf09 Panagiotis Kanavos
    /// 	A value indicating whether this property is required.
91 d78cbf09 Panagiotis Kanavos
    /// </value>
92 d78cbf09 Panagiotis Kanavos
    public Required Required { get; set; }
93 d78cbf09 Panagiotis Kanavos
94 d78cbf09 Panagiotis Kanavos
    /// <summary>
95 d78cbf09 Panagiotis Kanavos
    /// Initializes a new instance of the <see cref="JsonPropertyAttribute"/> class.
96 d78cbf09 Panagiotis Kanavos
    /// </summary>
97 d78cbf09 Panagiotis Kanavos
    public JsonPropertyAttribute()
98 d78cbf09 Panagiotis Kanavos
    {
99 d78cbf09 Panagiotis Kanavos
    }
100 d78cbf09 Panagiotis Kanavos
101 d78cbf09 Panagiotis Kanavos
    /// <summary>
102 d78cbf09 Panagiotis Kanavos
    /// Initializes a new instance of the <see cref="JsonPropertyAttribute"/> class with the specified name.
103 d78cbf09 Panagiotis Kanavos
    /// </summary>
104 d78cbf09 Panagiotis Kanavos
    /// <param name="propertyName">Name of the property.</param>
105 d78cbf09 Panagiotis Kanavos
    public JsonPropertyAttribute(string propertyName)
106 d78cbf09 Panagiotis Kanavos
    {
107 d78cbf09 Panagiotis Kanavos
      PropertyName = propertyName;
108 d78cbf09 Panagiotis Kanavos
    }
109 d78cbf09 Panagiotis Kanavos
  }
110 d78cbf09 Panagiotis Kanavos
}