Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Common / AuthoringOM / Fault.cs / 1305376 / Fault.cs
namespace System.Workflow.ComponentModel { using System; using System.Text; using System.Reflection; using System.Collections; using System.CodeDom; using System.ComponentModel; using System.ComponentModel.Design; using System.ComponentModel.Design.Serialization; using System.Drawing; using System.Runtime.Serialization; using System.Globalization; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Design; using System.Collections.Generic; using System.Workflow.Runtime; using System.Workflow.ComponentModel.Compiler; [SRDescription(SR.FaultActivityDescription)] [ToolboxItem(typeof(ActivityToolboxItem))] [Designer(typeof(ThrowDesigner), typeof(IDesigner))] [ToolboxBitmap(typeof(ThrowActivity), "Resources.Throw.png")] [SRCategory(SR.Standard)] public sealed class ThrowActivity : Activity, ITypeFilterProvider, IDynamicPropertyTypeProvider { [Browsable(false)] public static readonly DependencyProperty FaultProperty = DependencyProperty.Register("Fault", typeof(Exception), typeof(ThrowActivity)); [Browsable(false)] public static readonly DependencyProperty FaultTypeProperty = DependencyProperty.Register("FaultType", typeof(Type), typeof(ThrowActivity)); #region Constructors public ThrowActivity() { } public ThrowActivity(string name) : base(name) { } #endregion protected internal override void Initialize(IServiceProvider provider) { if (this.Parent == null) throw new InvalidOperationException(SR.GetString(SR.Error_MustHaveParent)); base.Initialize(provider); } protected internal override sealed ActivityExecutionStatus Execute(ActivityExecutionContext executionContext) { if (this.Fault == null && this.FaultType == null) { throw new InvalidOperationException(SR.GetString(CultureInfo.CurrentCulture, SR.Error_PropertyNotSet, FaultProperty.Name)); } if(this.FaultType != null && !typeof(Exception).IsAssignableFrom(this.FaultType)) { throw new InvalidOperationException(SR.GetString(CultureInfo.CurrentCulture, SR.Error_ExceptionTypeNotException, this.FaultType, FaultTypeProperty.Name)); } if (this.Fault != null && this.FaultType != null && !this.FaultType.IsInstanceOfType(this.Fault)) { throw new InvalidOperationException(SR.GetString(CultureInfo.CurrentCulture, SR.Error_FaultIsNotOfFaultType)); } if(this.Fault != null) throw this.Fault; ConstructorInfo cInfo = this.FaultType.GetConstructor(new Type[] { }); if (cInfo != null) throw (Exception)cInfo.Invoke(null); throw new InvalidOperationException(SR.GetString(CultureInfo.CurrentCulture, SR.Error_FaultTypeNoDefaultConstructor, this.FaultType)); } [TypeConverter(typeof(FaultConverter))] [SRCategory(SR.Handlers)] [SRDescription(SR.FaultDescription)] [MergableProperty(false)] [DefaultValue(null)] public Exception Fault { get { return base.GetValue(FaultProperty) as Exception; } set { base.SetValue(FaultProperty, value); } } [Editor(typeof(TypeBrowserEditor), typeof(System.Drawing.Design.UITypeEditor))] [SRCategory(SR.Handlers)] [SRDescription(SR.FaultTypeDescription)] [MergableProperty(false)] [DefaultValue(null)] [TypeConverter(typeof(FaultTypeConverter))] public Type FaultType { get { return base.GetValue(FaultTypeProperty) as Type; } set { base.SetValue(FaultTypeProperty, value); } } #region ITypeFilterProvider Members bool ITypeFilterProvider.CanFilterType(Type type, bool throwOnError) { bool isAssignable = TypeProvider.IsAssignable(typeof(Exception), type); if (throwOnError && !isAssignable) throw new Exception(SR.GetString(SR.Error_ExceptionTypeNotException, type, "Type")); return isAssignable; } string ITypeFilterProvider.FilterDescription { get { return SR.GetString(SR.FilterDescription_FaultHandlerActivity); } } #endregion #region IDynamicPropertyTypeProvider Members Type IDynamicPropertyTypeProvider.GetPropertyType(IServiceProvider serviceProvider, string propertyName) { if (!String.IsNullOrEmpty(propertyName) && propertyName.Equals("Fault", StringComparison.Ordinal)) return FaultType; else return null; } AccessTypes IDynamicPropertyTypeProvider.GetAccessType(IServiceProvider serviceProvider, string propertyName) { return AccessTypes.Read; } #endregion #region Class FaultConverter private sealed class FaultConverter : TypeConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == typeof(string)) return false; return base.CanConvertFrom(context, sourceType); } } #endregion #region Class FaultTypeConverter private sealed class FaultTypeConverter : TypeConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == typeof(string)) return true; return base.CanConvertFrom(context, sourceType); } public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { object convertedValue = value; string stringValue = value as string; ITypeProvider typeProvider = context.GetService(typeof(ITypeProvider)) as ITypeProvider; if (context != null && typeProvider != null && !String.IsNullOrEmpty(stringValue)) { Type type = typeProvider.GetType(stringValue, false); if (type != null) { ITypeFilterProvider typeFilterProvider = context.Instance as ITypeFilterProvider; if (typeFilterProvider != null) typeFilterProvider.CanFilterType(type, true); convertedValue = type; } } else if (stringValue != null && stringValue.Length == 0) { convertedValue = null; } return convertedValue; } public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) { if (destinationType == typeof(string)) return true; return base.CanConvertTo(context, destinationType); } public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { if (destinationType == typeof(string)) { Type type = value as Type; if (type != null) return type.FullName; } return base.ConvertTo(context, culture, value, destinationType); } } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. namespace System.Workflow.ComponentModel { using System; using System.Text; using System.Reflection; using System.Collections; using System.CodeDom; using System.ComponentModel; using System.ComponentModel.Design; using System.ComponentModel.Design.Serialization; using System.Drawing; using System.Runtime.Serialization; using System.Globalization; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Design; using System.Collections.Generic; using System.Workflow.Runtime; using System.Workflow.ComponentModel.Compiler; [SRDescription(SR.FaultActivityDescription)] [ToolboxItem(typeof(ActivityToolboxItem))] [Designer(typeof(ThrowDesigner), typeof(IDesigner))] [ToolboxBitmap(typeof(ThrowActivity), "Resources.Throw.png")] [SRCategory(SR.Standard)] public sealed class ThrowActivity : Activity, ITypeFilterProvider, IDynamicPropertyTypeProvider { [Browsable(false)] public static readonly DependencyProperty FaultProperty = DependencyProperty.Register("Fault", typeof(Exception), typeof(ThrowActivity)); [Browsable(false)] public static readonly DependencyProperty FaultTypeProperty = DependencyProperty.Register("FaultType", typeof(Type), typeof(ThrowActivity)); #region Constructors public ThrowActivity() { } public ThrowActivity(string name) : base(name) { } #endregion protected internal override void Initialize(IServiceProvider provider) { if (this.Parent == null) throw new InvalidOperationException(SR.GetString(SR.Error_MustHaveParent)); base.Initialize(provider); } protected internal override sealed ActivityExecutionStatus Execute(ActivityExecutionContext executionContext) { if (this.Fault == null && this.FaultType == null) { throw new InvalidOperationException(SR.GetString(CultureInfo.CurrentCulture, SR.Error_PropertyNotSet, FaultProperty.Name)); } if(this.FaultType != null && !typeof(Exception).IsAssignableFrom(this.FaultType)) { throw new InvalidOperationException(SR.GetString(CultureInfo.CurrentCulture, SR.Error_ExceptionTypeNotException, this.FaultType, FaultTypeProperty.Name)); } if (this.Fault != null && this.FaultType != null && !this.FaultType.IsInstanceOfType(this.Fault)) { throw new InvalidOperationException(SR.GetString(CultureInfo.CurrentCulture, SR.Error_FaultIsNotOfFaultType)); } if(this.Fault != null) throw this.Fault; ConstructorInfo cInfo = this.FaultType.GetConstructor(new Type[] { }); if (cInfo != null) throw (Exception)cInfo.Invoke(null); throw new InvalidOperationException(SR.GetString(CultureInfo.CurrentCulture, SR.Error_FaultTypeNoDefaultConstructor, this.FaultType)); } [TypeConverter(typeof(FaultConverter))] [SRCategory(SR.Handlers)] [SRDescription(SR.FaultDescription)] [MergableProperty(false)] [DefaultValue(null)] public Exception Fault { get { return base.GetValue(FaultProperty) as Exception; } set { base.SetValue(FaultProperty, value); } } [Editor(typeof(TypeBrowserEditor), typeof(System.Drawing.Design.UITypeEditor))] [SRCategory(SR.Handlers)] [SRDescription(SR.FaultTypeDescription)] [MergableProperty(false)] [DefaultValue(null)] [TypeConverter(typeof(FaultTypeConverter))] public Type FaultType { get { return base.GetValue(FaultTypeProperty) as Type; } set { base.SetValue(FaultTypeProperty, value); } } #region ITypeFilterProvider Members bool ITypeFilterProvider.CanFilterType(Type type, bool throwOnError) { bool isAssignable = TypeProvider.IsAssignable(typeof(Exception), type); if (throwOnError && !isAssignable) throw new Exception(SR.GetString(SR.Error_ExceptionTypeNotException, type, "Type")); return isAssignable; } string ITypeFilterProvider.FilterDescription { get { return SR.GetString(SR.FilterDescription_FaultHandlerActivity); } } #endregion #region IDynamicPropertyTypeProvider Members Type IDynamicPropertyTypeProvider.GetPropertyType(IServiceProvider serviceProvider, string propertyName) { if (!String.IsNullOrEmpty(propertyName) && propertyName.Equals("Fault", StringComparison.Ordinal)) return FaultType; else return null; } AccessTypes IDynamicPropertyTypeProvider.GetAccessType(IServiceProvider serviceProvider, string propertyName) { return AccessTypes.Read; } #endregion #region Class FaultConverter private sealed class FaultConverter : TypeConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == typeof(string)) return false; return base.CanConvertFrom(context, sourceType); } } #endregion #region Class FaultTypeConverter private sealed class FaultTypeConverter : TypeConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == typeof(string)) return true; return base.CanConvertFrom(context, sourceType); } public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { object convertedValue = value; string stringValue = value as string; ITypeProvider typeProvider = context.GetService(typeof(ITypeProvider)) as ITypeProvider; if (context != null && typeProvider != null && !String.IsNullOrEmpty(stringValue)) { Type type = typeProvider.GetType(stringValue, false); if (type != null) { ITypeFilterProvider typeFilterProvider = context.Instance as ITypeFilterProvider; if (typeFilterProvider != null) typeFilterProvider.CanFilterType(type, true); convertedValue = type; } } else if (stringValue != null && stringValue.Length == 0) { convertedValue = null; } return convertedValue; } public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) { if (destinationType == typeof(string)) return true; return base.CanConvertTo(context, destinationType); } public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { if (destinationType == typeof(string)) { Type type = value as Type; if (type != null) return type.FullName; } return base.ConvertTo(context, culture, value, destinationType); } } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SmiEventStream.cs
- HttpHandlerActionCollection.cs
- ChineseLunisolarCalendar.cs
- InvariantComparer.cs
- WebPartRestoreVerb.cs
- IndexObject.cs
- HtmlEmptyTagControlBuilder.cs
- EntityContainerRelationshipSet.cs
- clipboard.cs
- DigestTraceRecordHelper.cs
- WindowsStreamSecurityBindingElement.cs
- DataSourceProvider.cs
- IndexedGlyphRun.cs
- WaitHandle.cs
- base64Transforms.cs
- DataTableMappingCollection.cs
- TriggerAction.cs
- TripleDESCryptoServiceProvider.cs
- ManagedFilter.cs
- WindowClosedEventArgs.cs
- ExtendedPropertyDescriptor.cs
- _LazyAsyncResult.cs
- CurrentTimeZone.cs
- ServicesUtilities.cs
- PathGeometry.cs
- SpellerStatusTable.cs
- ListBoxItemWrapperAutomationPeer.cs
- HealthMonitoringSection.cs
- ThicknessAnimationUsingKeyFrames.cs
- PassportIdentity.cs
- PointHitTestResult.cs
- UserUseLicenseDictionaryLoader.cs
- XsltLibrary.cs
- ReaderWriterLock.cs
- HostProtectionException.cs
- hebrewshape.cs
- NameValuePermission.cs
- RootContext.cs
- ViewStateException.cs
- X509CertificateChain.cs
- MsmqMessageProperty.cs
- embossbitmapeffect.cs
- precedingsibling.cs
- DocumentProperties.cs
- PartEditor.cs
- ComponentSerializationService.cs
- SiteMapNode.cs
- Point3DAnimation.cs
- DiscoveryClient.cs
- NavigationWindow.cs
- DocumentXmlWriter.cs
- CalendarSelectionChangedEventArgs.cs
- EmptyQuery.cs
- SafeNativeMethods.cs
- StreamWriter.cs
- StoreAnnotationsMap.cs
- ScriptComponentDescriptor.cs
- DoubleUtil.cs
- QuadraticBezierSegment.cs
- ComponentEditorPage.cs
- TdsParameterSetter.cs
- SmtpSection.cs
- AppSettingsReader.cs
- MediaPlayer.cs
- controlskin.cs
- HeaderedItemsControl.cs
- TypeInfo.cs
- ConfigurationManagerHelper.cs
- SafeIUnknown.cs
- SqlDependencyUtils.cs
- HashCodeCombiner.cs
- DeadCharTextComposition.cs
- SqlWorkflowPersistenceService.cs
- BrowserCapabilitiesCompiler.cs
- AnnotationDocumentPaginator.cs
- RawKeyboardInputReport.cs
- HwndSourceKeyboardInputSite.cs
- Line.cs
- CodeAccessSecurityEngine.cs
- ResourceContainer.cs
- ProfileSection.cs
- AppDomainProtocolHandler.cs
- User.cs
- ObjectTokenCategory.cs
- OptimizerPatterns.cs
- DefaultDialogButtons.cs
- AudienceUriMode.cs
- smtpconnection.cs
- DPAPIProtectedConfigurationProvider.cs
- SHA1CryptoServiceProvider.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- ImageSourceConverter.cs
- HttpListenerRequest.cs
- DecimalAnimation.cs
- SchemaImporterExtension.cs
- _CookieModule.cs
- SQLInt64Storage.cs
- SmiEventSink_Default.cs
- FieldBuilder.cs
- ListViewItem.cs