namespace System.Workflow.ComponentModel.Compiler { using System; using System.Collections; using System.CodeDom; using System.CodeDom.Compiler; using System.Globalization; using System.IO; using System.Runtime.InteropServices; using System.Workflow.ComponentModel.Serialization; // IWorkflowCompilerError is registered from Project System [Guid("AEA0CDAE-ADB5-46c6-A5ED-DBD516B3E0C1"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), ComVisible(false), ComImport] internal interface IWorkflowCompilerError { String Document { get; } bool IsWarning { get; } String Text { get; } String ErrorNumber { get; } int LineNumber { get; } int ColumnNumber { get; } } [Guid("A5367E37-D7AF-4372-8079-D1D6726AEDC8"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), ComVisible(false), ComImport] internal interface IWorkflowCompilerErrorLogger { void LogError(IWorkflowCompilerError error); void LogMessage(string message); } [Serializable] [Obsolete("The System.Workflow.* types are deprecated. Instead, please use the new types from System.Activities.*")] public sealed class WorkflowCompilerError : CompilerError, IWorkflowCompilerError { private Hashtable userData = null; private bool incrementLineAndColumn = false; private string propertyName = null; public WorkflowCompilerError() { } public WorkflowCompilerError(string fileName, int line, int column, string errorNumber, string errorText) : base(fileName, line, column, errorNumber, errorText) { } public WorkflowCompilerError(string fileName, WorkflowMarkupSerializationException exception) { if (exception == null) throw new ArgumentNullException("exception"); this.FileName = fileName; this.Line = exception.LineNumber - 1; this.Column = exception.LinePosition - 1; this.ErrorText = exception.Message; this.ErrorNumber = ErrorNumbers.Error_SerializationError.ToString(CultureInfo.InvariantCulture); this.incrementLineAndColumn = true; } internal WorkflowCompilerError(CompilerError error) { if (error == null) throw new ArgumentNullException("error"); this.Column = error.Column - 1; this.ErrorNumber = error.ErrorNumber; this.ErrorText = error.ErrorText; this.FileName = error.FileName; this.IsWarning = error.IsWarning; this.Line = error.Line - 1; this.incrementLineAndColumn = true; } public string PropertyName { get { return this.propertyName; } set { this.propertyName = value; } } public IDictionary UserData { get { if (this.userData == null) this.userData = new Hashtable(); return this.userData; } } public override string ToString() { if (FileName.Length > 0) { if (Line <= 0 || Column <= 0) return string.Format(CultureInfo.CurrentCulture, "{0} : {1} {2}: {3}", new object[] { FileName, IsWarning ? "warning" : "error", ErrorNumber, ErrorText }); else return string.Format(CultureInfo.CurrentCulture, "{0}({1},{2}) : {3} {4}: {5}", new object[] { FileName, this.incrementLineAndColumn ? Line + 1 : Line, this.incrementLineAndColumn ? Column + 1 : Column, IsWarning ? "warning" : "error", ErrorNumber, ErrorText }); } else { return string.Format(CultureInfo.CurrentCulture, "{0} {1}: {2}", IsWarning ? "warning" : "error", ErrorNumber, ErrorText); } } #region IWorkflowCompilerError Members string IWorkflowCompilerError.Document { get { return this.FileName; } } bool IWorkflowCompilerError.IsWarning { get { return this.IsWarning; } } string IWorkflowCompilerError.Text { get { return this.ErrorText; } } string IWorkflowCompilerError.ErrorNumber { get { return this.ErrorNumber; } } int IWorkflowCompilerError.LineNumber { get { return this.Line; } } int IWorkflowCompilerError.ColumnNumber { get { return this.Column; } } #endregion } }