public class XmlSchemaException : System.SystemException\r
{\r
//fields\r
+ private bool hasLineInfo;\r
private int lineNumber;\r
private int linePosition;\r
private XmlSchemaObject sourceObj;\r
protected XmlSchemaException(SerializationInfo info, StreamingContext context)\r
: base (info, context)\r
{\r
+ hasLineInfo = true;\r
this.lineNumber = info.GetInt32 ("lineNumber");\r
this.linePosition = info.GetInt32 ("linePosition");\r
this.sourceUri = info.GetString ("sourceUri");\r
this.sourceObj = info.GetValue ("sourceObj", typeof (XmlSchemaObject)) as XmlSchemaObject;\r
}\r
\r
- \r
internal XmlSchemaException(string message, int lineNumber, int linePosition,\r
XmlSchemaObject sourceObject, string sourceUri, Exception innerException)\r
: base(message, innerException)\r
{\r
+ hasLineInfo = true;\r
this.lineNumber = lineNumber;\r
this.linePosition = linePosition;\r
this.sourceObj = sourceObject;\r
this.sourceUri = sourceUri;\r
}\r
+\r
+ internal XmlSchemaException(string message, object sender,\r
+ string sourceUri, XmlSchemaObject sourceObject, Exception innerException)\r
+ : base(message, innerException)\r
+ {\r
+ IXmlLineInfo li = sender as IXmlLineInfo;\r
+ if (li != null && li.HasLineInfo ()) {\r
+ hasLineInfo = true;\r
+ this.lineNumber = li.LineNumber;\r
+ this.linePosition = li.LinePosition;\r
+ }\r
+ this.sourceObj = sourceObject;\r
+ }\r
+\r
internal XmlSchemaException(string message, XmlSchemaObject sourceObject,\r
Exception innerException)\r
: base(message, innerException)\r
{\r
+ hasLineInfo = true;\r
this.lineNumber = sourceObject.LineNumber;\r
this.linePosition = sourceObject.LinePosition;\r
this.sourceObj = sourceObject;\r
public override string Message\r
{\r
get {\r
- string msg = base.Message;\r
- if (sourceUri != null)\r
- msg = String.Format ("XmlSchema error: {0}\n" +\r
- "URI: {1}, line {2}, position {3}",\r
- msg, sourceUri, lineNumber, linePosition);\r
-\r
+ string msg = "XmlSchema error: " + base.Message;\r
+ if (hasLineInfo)\r
+ msg += String.Format (" XML {0} Line {1}, Position {2}.",\r
+ (sourceUri != null && sourceUri != "") ? "URI: " + sourceUri + " ." : "",\r
+ lineNumber,\r
+ linePosition);\r
+ if (sourceObj != null)\r
+ msg += String.Format (" Related schema item SourceUri: {0}, Line {1}, Position {2}.",\r
+ sourceObj.SourceUri, sourceObj.LineNumber, sourceObj.LinePosition);\r
return msg;\r
}\r
}\r