1 //----------------------------------------------------------------
2 // Copyright (c) Microsoft Corporation. All rights reserved.
3 //----------------------------------------------------------------
5 namespace System.Activities.Presentation.Metadata
9 using System.Collections.Generic;
10 using System.Runtime.Serialization;
11 using System.Security.Permissions;
12 using System.Activities.Presentation;
15 // This exception may be thrown from the ValidateTable method on
16 // AttributeTable. It will be thrown if the metadata provided in
17 // the table does not match properties, methods and events on real
21 public class AttributeTableValidationException : Exception
23 private string[] _validationErrors;
26 // Creates a new AttributeTableValidationException.
28 public AttributeTableValidationException() : base()
33 // Creates a new AttributeTableValidationException.
35 // <param name="message"></param>
36 public AttributeTableValidationException(string message)
42 // Creates a new AttributeTableValidationException.
44 // <param name="message">The message provided to the user.</param>
45 // <param name="inner">An optional inner exception.</param>
46 public AttributeTableValidationException(string message, Exception inner)
47 : base(message, inner)
52 // Creates a new AttributeTableValidationException.
54 // <param name="message">The message provided to the user.</param>
55 // <param name="validationErrors">Zero or more errors that occurred during validation.</param>
56 public AttributeTableValidationException(string message, IEnumerable<string> validationErrors)
59 _validationErrors = CreateArray(validationErrors);
63 // Creates a new AttributeTableValidationException.
65 // <param name="message">The message provided to the user.</param>
66 // <param name="inner">An optional inner exception.</param>
67 // <param name="validationErrors">Zero or more errors that occurred during validation.</param>
68 public AttributeTableValidationException(string message, Exception inner, IEnumerable<string> validationErrors)
69 : base(message, inner)
71 _validationErrors = CreateArray(validationErrors);
75 // Used during serialization to deserialize an exception.
77 // <param name="info">The serialization store.</param>
78 // <param name="context">The serialization context.</param>
79 protected AttributeTableValidationException(SerializationInfo info, StreamingContext context)
84 throw FxTrace.Exception.ArgumentNull("info");
86 _validationErrors = (string[])info.GetValue("ValidationErrors", typeof(string[]));
90 // Returns an enumeration of validation errors.
92 public IEnumerable<string> ValidationErrors
94 get { return _validationErrors; }
98 // Helper method to create an array from an enumeration.
100 private static string[] CreateArray(IEnumerable<string> validationErrors) {
104 if (validationErrors != null)
107 IEnumerator<string> e = validationErrors.GetEnumerator();
115 array = new string[cnt];
121 array[cnt++] = e.Current;
126 array = new string[0];
133 // Override of Exception's GetObjectData that is used to perform serialization.
135 // <param name="info">The serialization store.</param>
136 // <param name="context">The serialization context.</param>
137 public override void GetObjectData(SerializationInfo info, StreamingContext context)
141 throw FxTrace.Exception.ArgumentNull("info");
143 base.GetObjectData(info, context);
144 info.AddValue("ValidationErrors", _validationErrors);