1 /* 2 * Created by SharpDevelop. 3 * User: lextm 4 * Date: 2008/5/17 5 * Time: 16:33 6 * 7 * To change this template use Tools | Options | Coding | Edit Standard Headers. 8 */ 9 10 using System; 11 using System.Globalization; 12 #if (!SILVERLIGHT) 13 using System.Runtime.Serialization; 14 using System.Security.Permissions; 15 #endif 16 17 namespace Lextm.SharpSnmpLib.Mib 18 { 19 /// <summary> 20 /// Description of MibException. 21 /// </summary> 22 [Serializable] 23 [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Mib")] 24 public sealed class MibException : Exception 25 { 26 /// <summary> 27 /// Symbol. 28 /// </summary> 29 public Symbol Symbol { get; private set; } 30 31 /// <summary> 32 /// Creates a <see cref="MibException"/>. 33 /// </summary> MibException()34 public MibException() 35 { 36 } 37 38 /// <summary> 39 /// Creates a <see cref="SnmpException"/> instance with a specific <see cref="string"/>. 40 /// </summary> 41 /// <param name="message">Message</param> MibException(string message)42 public MibException(string message) : base(message) 43 { 44 } 45 46 /// <summary> 47 /// Creates a <see cref="MibException"/> instance with a specific <see cref="string"/> and an <see cref="Exception"/>. 48 /// </summary> 49 /// <param name="message">Message</param> 50 /// <param name="inner">Inner exception</param> MibException(string message, Exception inner)51 public MibException(string message, Exception inner) 52 : base(message, inner) 53 { 54 } 55 #if (!SILVERLIGHT) 56 /// <summary> 57 /// Creates a <see cref="MibException"/> instance. 58 /// </summary> 59 /// <param name="info">Info</param> 60 /// <param name="context">Context</param> MibException(SerializationInfo info, StreamingContext context)61 private MibException(SerializationInfo info, StreamingContext context) : base(info, context) 62 { 63 if (info == null) 64 { 65 throw new ArgumentNullException("info"); 66 } 67 68 Symbol = (Symbol)info.GetValue("Symbol", typeof(Symbol)); 69 } 70 71 /// <summary> 72 /// Gets object data. 73 /// </summary> 74 /// <param name="info">Info</param> 75 /// <param name="context">Context</param> 76 [SecurityPermission(SecurityAction.Demand, SerializationFormatter = true)] GetObjectData(SerializationInfo info, StreamingContext context)77 public override void GetObjectData(SerializationInfo info, StreamingContext context) 78 { 79 base.GetObjectData(info, context); 80 info.AddValue("Symbol", Symbol); 81 } 82 #endif 83 84 /// <summary> 85 /// Creates a <see cref="MibException"/> with a specific <see cref="Symbol"/>. 86 /// </summary> 87 /// <param name="message">Message</param> 88 /// <param name="symbol">Symbol</param> 89 /// <returns></returns> Create(string message, Symbol symbol)90 public static MibException Create(string message, Symbol symbol) 91 { 92 if (symbol == null) 93 { 94 throw new ArgumentNullException("symbol"); 95 } 96 97 if (String.IsNullOrEmpty(message)) 98 { 99 message = "Unknown MIB Exception"; 100 } 101 102 message = String.Format( 103 "{0} (file: \"{1}\"; row: {2}; column: {3})", 104 message, 105 symbol.File, 106 symbol.Row + 1, 107 symbol.Column + 1); 108 109 MibException ex = new MibException(message) { Symbol = symbol }; 110 return ex; 111 } 112 } 113 }