Statistics
| Branch: | Revision:

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

History | View | Annotate | Download (3.7 kB)

1
using System;
2

    
3
namespace Newtonsoft.Json
4
{
5
  /// <summary>
6
  /// Instructs the <see cref="JsonSerializer"/> to always serialize the member with the specified name.
7
  /// </summary>
8
  [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
9
  public sealed class JsonPropertyAttribute : Attribute
10
  {
11
    // yuck. can't set nullable properties on an attribute in C#
12
    // have to use this approach to get an unset default state
13
    internal NullValueHandling? _nullValueHandling;
14
    internal DefaultValueHandling? _defaultValueHandling;
15
    internal ReferenceLoopHandling? _referenceLoopHandling;
16
    internal ObjectCreationHandling? _objectCreationHandling;
17
    internal TypeNameHandling? _typeNameHandling;
18
    internal bool? _isReference;
19

    
20
    /// <summary>
21
    /// Gets or sets the null value handling used when serializing this property.
22
    /// </summary>
23
    /// <value>The null value handling.</value>
24
    public NullValueHandling NullValueHandling
25
    {
26
      get { return _nullValueHandling ?? default(NullValueHandling); }
27
      set { _nullValueHandling = value; }
28
    }
29

    
30
    /// <summary>
31
    /// Gets or sets the default value handling used when serializing this property.
32
    /// </summary>
33
    /// <value>The default value handling.</value>
34
    public DefaultValueHandling DefaultValueHandling
35
    {
36
      get { return _defaultValueHandling ?? default(DefaultValueHandling); }
37
      set { _defaultValueHandling = value; }
38
    }
39

    
40
    /// <summary>
41
    /// Gets or sets the reference loop handling used when serializing this property.
42
    /// </summary>
43
    /// <value>The reference loop handling.</value>
44
    public ReferenceLoopHandling ReferenceLoopHandling
45
    {
46
      get { return _referenceLoopHandling ?? default(ReferenceLoopHandling); }
47
      set { _referenceLoopHandling = value; }
48
    }
49

    
50
    /// <summary>
51
    /// Gets or sets the object creation handling used when deserializing this property.
52
    /// </summary>
53
    /// <value>The object creation handling.</value>
54
    public ObjectCreationHandling ObjectCreationHandling
55
    {
56
      get { return _objectCreationHandling ?? default(ObjectCreationHandling); }
57
      set { _objectCreationHandling = value; }
58
    }
59

    
60
    /// <summary>
61
    /// Gets or sets the type name handling used when serializing this property.
62
    /// </summary>
63
    /// <value>The type name handling.</value>
64
    public TypeNameHandling TypeNameHandling
65
    {
66
      get { return _typeNameHandling ?? default(TypeNameHandling); }
67
      set { _typeNameHandling = value; }
68
    }
69

    
70
    /// <summary>
71
    /// Gets or sets whether this property's value is serialized as a reference.
72
    /// </summary>
73
    /// <value>Whether this property's value is serialized as a reference.</value>
74
    public bool IsReference
75
    {
76
      get { return _isReference ?? default(bool); }
77
      set { _isReference = value; }
78
    }
79

    
80
    /// <summary>
81
    /// Gets or sets the name of the property.
82
    /// </summary>
83
    /// <value>The name of the property.</value>
84
    public string PropertyName { get; set; }
85

    
86
    /// <summary>
87
    /// Gets or sets a value indicating whether this property is required.
88
    /// </summary>
89
    /// <value>
90
    /// 	A value indicating whether this property is required.
91
    /// </value>
92
    public Required Required { get; set; }
93

    
94
    /// <summary>
95
    /// Initializes a new instance of the <see cref="JsonPropertyAttribute"/> class.
96
    /// </summary>
97
    public JsonPropertyAttribute()
98
    {
99
    }
100

    
101
    /// <summary>
102
    /// Initializes a new instance of the <see cref="JsonPropertyAttribute"/> class with the specified name.
103
    /// </summary>
104
    /// <param name="propertyName">Name of the property.</param>
105
    public JsonPropertyAttribute(string propertyName)
106
    {
107
      PropertyName = propertyName;
108
    }
109
  }
110
}