Initial commit
[mono.git] / mcs / class / referencesource / mscorlib / system / runtime / serialization / memberholder.cs
1 // ==++==
2 // 
3 //   Copyright (c) Microsoft Corporation.  All rights reserved.
4 // 
5 // ==--==
6 /*============================================================
7 **
8 ** Class: MemberHolder
9 **
10 **
11 ** Purpose: This is a lightweight class designed to hold the members 
12 **          and StreamingContext for a particular class.
13 **
14 **
15 ============================================================*/
16 namespace System.Runtime.Serialization {
17
18     using System.Runtime.Remoting;
19     using System;
20     using System.Reflection;
21     [Serializable]
22     internal class MemberHolder {
23 // disable csharp compiler warning #0414: field assigned unused value
24 #pragma warning disable 0414
25         internal MemberInfo[] members = null;
26 #pragma warning restore 0414
27         internal Type memberType;
28         internal StreamingContext context;
29         
30         internal MemberHolder(Type type, StreamingContext ctx) {
31             memberType = type;
32             context = ctx;
33         }
34     
35         public override int GetHashCode() {
36             return memberType.GetHashCode();
37         }
38     
39         public override bool Equals(Object obj) {
40             if (!(obj is MemberHolder)) {
41                 return false;
42             }
43             
44             MemberHolder temp = (MemberHolder)obj;
45     
46             if (Object.ReferenceEquals(temp.memberType, memberType) && temp.context.State == context.State) {
47                 return true;
48             }
49             
50             return false;
51         }
52     }
53 }