Implement MachineKey.Protect and MachineKey.Unprotect
[mono.git] / mcs / class / System / System.ComponentModel / NotifyParentPropertyAttribute.cs
1 //
2 // System.ComponentModel.NotifyParentPropertyAttribute.cs
3 //
4 // Author:
5 //  Tim Coleman (tim@timcoleman.com)
6 //  Andreas Nahr (ClassDevelopment@A-SoftTech.com)
7 //
8 // Copyright (C) Tim Coleman, 2002
9 // (C) 2003 Andreas Nahr
10 //
11 //
12
13 //
14 // Permission is hereby granted, free of charge, to any person obtaining
15 // a copy of this software and associated documentation files (the
16 // "Software"), to deal in the Software without restriction, including
17 // without limitation the rights to use, copy, modify, merge, publish,
18 // distribute, sublicense, and/or sell copies of the Software, and to
19 // permit persons to whom the Software is furnished to do so, subject to
20 // the following conditions:
21 // 
22 // The above copyright notice and this permission notice shall be
23 // included in all copies or substantial portions of the Software.
24 // 
25 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
26 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
28 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
29 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
30 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
31 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32 //
33
34 namespace System.ComponentModel {
35         [AttributeUsage (AttributeTargets.Property)]
36         public sealed class NotifyParentPropertyAttribute : Attribute {
37
38                 #region Fields
39
40                 private bool notifyParent;
41
42                 #endregion // Fields
43                 
44                 public static readonly NotifyParentPropertyAttribute Default = new NotifyParentPropertyAttribute (false);
45                 public static readonly NotifyParentPropertyAttribute No = new NotifyParentPropertyAttribute (false);
46                 public static readonly NotifyParentPropertyAttribute Yes = new NotifyParentPropertyAttribute (true);
47
48                 #region Constructors
49
50                 public NotifyParentPropertyAttribute (bool notifyParent)
51                 {
52                         this.notifyParent = notifyParent;
53                 }
54
55                 #endregion // Constructors
56
57                 #region Properties
58
59                 public bool NotifyParent {
60                         get { return notifyParent; }
61                 }
62
63                 #endregion // Properties
64
65                 #region Methods
66
67                 public override bool Equals (object obj)
68                 {
69                         if (!(obj is NotifyParentPropertyAttribute))
70                                 return false;
71                         if (obj == this)
72                                 return true;
73                         return ((NotifyParentPropertyAttribute) obj).NotifyParent == notifyParent;
74                 }
75
76                 public override int GetHashCode ()
77                 {
78                         return notifyParent.GetHashCode ();
79                 }
80
81                 public override bool IsDefaultAttribute ()
82                 {
83                         return notifyParent == NotifyParentPropertyAttribute.Default.NotifyParent;
84                 }
85
86                 #endregion // Methods
87         }
88 }