* MissingMemberException.cs: Fix in serialization constructor.
[mono.git] / mcs / class / corlib / System / MissingMemberException.cs
1 //
2 // System.MissingMemberException.cs
3 //
4 // Authors:
5 //   Duncan Mak (duncan@ximian.com)
6 //   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
7 //
8 // (C) Ximian, Inc. http://www.ximian.com
9 //
10
11 using System.Runtime.Serialization;
12
13 namespace System
14 {
15         [Serializable]
16         public class MissingMemberException : MemberAccessException
17         {
18                 const int Result = unchecked ((int)0x80131512);
19
20                 // Fields
21                 protected string ClassName;
22                 protected string MemberName;
23                 protected byte[] Signature;
24
25                 public MissingMemberException ()
26                         : base (Locale.GetText ("Cannot find the requested class member."))
27                 {
28                         HResult = Result;
29                 }
30
31                 public MissingMemberException (string message)
32                         : base (message)
33                 {
34                         HResult = Result;
35                 }
36
37                 public MissingMemberException (string message, Exception inner)
38                         : base (message, inner)
39                 {
40                         HResult = Result;
41                 }
42
43                 protected MissingMemberException (SerializationInfo info, StreamingContext context)
44                         : base (info, context)
45                 {
46                         ClassName = info.GetString ("MMClassName");
47                         MemberName = info.GetString ("MMMemberName");
48                         Signature = (byte[]) info.GetValue ("MMSignature", typeof(byte[]));
49                 }
50
51                 public MissingMemberException (string className, string memberName)
52                 {
53                         ClassName = className;
54                         MemberName = memberName;
55                         HResult = Result;
56                 }
57
58                 // Methods
59                 public override void GetObjectData (SerializationInfo info, StreamingContext context)
60                 {
61                         base.GetObjectData (info, context);
62                         info.AddValue ("MMClassName", ClassName);
63                         info.AddValue ("MMMemberName", MemberName);
64                         info.AddValue ("MMSignature", Signature);
65                 }
66
67                 public override string Message {
68                         get {
69                                 if (ClassName == null)
70                                         return base.Message;
71
72                                 String msg = Locale.GetText ("Member {0}.{1} not found.");
73                                 return String.Format (msg, ClassName, MemberName);
74                         }
75                 }
76         }
77 }