XmlSchemaException.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. // Author: Dwivedi, Ajay kumar
  2. // [email protected]
  3. using System;
  4. using System.Runtime.Serialization;
  5. namespace System.Xml.Schema
  6. {
  7. /// <summary>
  8. /// Summary description for XmlSchemaException.
  9. /// </summary>
  10. [Serializable]
  11. public class XmlSchemaException : System.SystemException
  12. {
  13. //fields
  14. private bool hasLineInfo;
  15. private int lineNumber;
  16. private int linePosition;
  17. private XmlSchemaObject sourceObj;
  18. private string sourceUri;
  19. protected XmlSchemaException(SerializationInfo info, StreamingContext context)
  20. : base (info, context)
  21. {
  22. hasLineInfo = true;
  23. this.lineNumber = info.GetInt32 ("lineNumber");
  24. this.linePosition = info.GetInt32 ("linePosition");
  25. this.sourceUri = info.GetString ("sourceUri");
  26. this.sourceObj = info.GetValue ("sourceObj", typeof (XmlSchemaObject)) as XmlSchemaObject;
  27. }
  28. internal XmlSchemaException(string message, int lineNumber, int linePosition,
  29. XmlSchemaObject sourceObject, string sourceUri, Exception innerException)
  30. : base(message, innerException)
  31. {
  32. hasLineInfo = true;
  33. this.lineNumber = lineNumber;
  34. this.linePosition = linePosition;
  35. this.sourceObj = sourceObject;
  36. this.sourceUri = sourceUri;
  37. }
  38. internal XmlSchemaException(string message, object sender,
  39. string sourceUri, XmlSchemaObject sourceObject, Exception innerException)
  40. : base(message, innerException)
  41. {
  42. IXmlLineInfo li = sender as IXmlLineInfo;
  43. if (li != null && li.HasLineInfo ()) {
  44. hasLineInfo = true;
  45. this.lineNumber = li.LineNumber;
  46. this.linePosition = li.LinePosition;
  47. }
  48. this.sourceObj = sourceObject;
  49. }
  50. internal XmlSchemaException(string message, XmlSchemaObject sourceObject,
  51. Exception innerException)
  52. : base(message, innerException)
  53. {
  54. hasLineInfo = true;
  55. this.lineNumber = sourceObject.LineNumber;
  56. this.linePosition = sourceObject.LinePosition;
  57. this.sourceObj = sourceObject;
  58. this.sourceUri = sourceObject.SourceUri;
  59. }
  60. public XmlSchemaException(string message, Exception innerException)
  61. : base(message,innerException){}
  62. // Properties
  63. public int LineNumber
  64. {
  65. get{ return this.lineNumber;}
  66. }
  67. public int LinePosition
  68. {
  69. get{ return this.linePosition;}
  70. }
  71. public XmlSchemaObject SourceSchemaObject
  72. {
  73. get{ return this.sourceObj; }
  74. }
  75. public string SourceUri
  76. {
  77. get{ return this.sourceUri; }
  78. }
  79. public override string Message
  80. {
  81. get {
  82. string msg = "XmlSchema error: " + base.Message;
  83. if (hasLineInfo)
  84. msg += String.Format (" XML {0} Line {1}, Position {2}.",
  85. (sourceUri != null && sourceUri != "") ? "URI: " + sourceUri + " ." : "",
  86. lineNumber,
  87. linePosition);
  88. if (sourceObj != null)
  89. msg += String.Format (" Related schema item SourceUri: {0}, Line {1}, Position {2}.",
  90. sourceObj.SourceUri, sourceObj.LineNumber, sourceObj.LinePosition);
  91. return msg;
  92. }
  93. }
  94. // Methods
  95. public override void GetObjectData(SerializationInfo info, StreamingContext context)
  96. {
  97. base.GetObjectData (info, context);
  98. info.AddValue ("lineNumber", lineNumber);
  99. info.AddValue ("linePosition", linePosition);
  100. info.AddValue ("sourceUri", sourceUri);
  101. info.AddValue ("sourceObj", sourceObj);
  102. }
  103. }
  104. }