1 //------------------------------------------------------------------------------
2 // <copyright file="DataObjectAttribute.cs" company="Microsoft">
3 //     Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 //------------------------------------------------------------------------------
6 
7 namespace System.ComponentModel {
8 
9     using System;
10     using System.Security.Permissions;
11 
12     /// <devdoc>
13     /// </devdoc>
14     [AttributeUsage(AttributeTargets.Class)]
15     public sealed class DataObjectAttribute : Attribute {
16 
17         public static readonly DataObjectAttribute DataObject = new DataObjectAttribute(true);
18 
19         public static readonly DataObjectAttribute NonDataObject = new DataObjectAttribute(false);
20 
21         public static readonly DataObjectAttribute Default = NonDataObject;
22 
23         private bool _isDataObject;
24 
DataObjectAttribute()25         public DataObjectAttribute() : this(true) {
26         }
27 
DataObjectAttribute(bool isDataObject)28         public DataObjectAttribute(bool isDataObject) {
29             _isDataObject = isDataObject;
30         }
31 
32         public bool IsDataObject {
33             get {
34                 return _isDataObject;
35             }
36         }
37 
38         /// <internalonly/>
Equals(object obj)39         public override bool Equals(object obj) {
40             if (obj == this) {
41                 return true;
42             }
43 
44             DataObjectAttribute other = obj as DataObjectAttribute;
45             return (other != null) && (other.IsDataObject == IsDataObject);
46         }
47 
48         /// <internalonly/>
GetHashCode()49         public override int GetHashCode() {
50             return _isDataObject.GetHashCode();
51         }
52 
53         /// <internalonly/>
IsDefaultAttribute()54         public override bool IsDefaultAttribute() {
55             return (this.Equals(Default));
56         }
57     }
58 }
59