//----------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Statements { using System; using System.Activities; using System.Activities.Runtime; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics.CodeAnalysis; using System.Runtime; using System.Windows.Markup; [SuppressMessage(FxCop.Category.Naming, FxCop.Rule.IdentifiersShouldNotMatchKeywords, Justification = "Optimizing for XAML naming. VB imperative users will [] qualify (e.g. New [Catch](Of Exception))")] public abstract class Catch { internal Catch() { } public abstract Type ExceptionType { get; } internal abstract ActivityDelegate GetAction(); internal abstract void ScheduleAction(NativeActivityContext context, Exception exception, CompletionCallback completionCallback, FaultCallback faultCallback); } [ContentProperty("Action")] [SuppressMessage(FxCop.Category.Naming, FxCop.Rule.IdentifiersShouldNotMatchKeywords, Justification = "Optimizing for XAML naming. VB imperative users will [] qualify (e.g. New [Catch](Of Exception))")] public sealed class Catch : Catch where TException : Exception { public Catch() : base() { } public override Type ExceptionType { get { return typeof(TException); } } [DefaultValue(null)] public ActivityAction Action { get; set; } internal override ActivityDelegate GetAction() { return this.Action; } internal override void ScheduleAction(NativeActivityContext context, Exception exception, CompletionCallback completionCallback, FaultCallback faultCallback) { context.ScheduleAction(this.Action, (TException)exception, completionCallback, faultCallback); } } }