Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Activities / CodeExpressionRuleDeclaration.cs / 1305376 / CodeExpressionRuleDeclaration.cs
namespace System.Workflow.Activities { using System; using System.Collections; using System.Collections.Generic; using System.CodeDom; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Diagnostics; using System.Reflection; using System.Workflow.ComponentModel; using System.Workflow.Runtime; using System.Workflow.ComponentModel.Compiler; using System.Workflow.ComponentModel.Serialization; using System.Workflow.Runtime.DebugEngine; [ToolboxItem(false)] [ActivityValidator(typeof(CodeConditionValidator))] [SRDisplayName(SR.CodeConditionDisplayName)] public class CodeCondition : ActivityCondition { public static readonly DependencyProperty ConditionEvent = DependencyProperty.Register("Condition", typeof(EventHandler), typeof(CodeCondition)); [SRDescription(SR.ExpressionDescr)] [SRCategory(SR.Handlers)] [MergableProperty(false)] public event EventHandler Condition { add { base.AddHandler(ConditionEvent, value); } remove { base.RemoveHandler(ConditionEvent, value); } } #region Bind resolution Support protected override object GetBoundValue(ActivityBind bind, Type targetType) { if (bind == null) throw new ArgumentNullException("bind"); if (targetType == null) throw new ArgumentNullException("targetType"); object returnVal = bind; Activity activity = this.ParentDependencyObject as Activity; if (activity != null) returnVal = bind.GetRuntimeValue(activity, targetType); return returnVal; } #endregion public override bool Evaluate(Activity ownerActivity, IServiceProvider provider) { if (provider == null) throw new ArgumentNullException("provider"); ConditionalEventArgs eventArgs = new ConditionalEventArgs(); EventHandler [] eventHandlers = base.GetInvocationList >(CodeCondition.ConditionEvent); IWorkflowDebuggerService workflowDebuggerService = provider.GetService(typeof(IWorkflowDebuggerService)) as IWorkflowDebuggerService; if (eventHandlers != null) { foreach (EventHandler eventHandler in eventHandlers) { if (workflowDebuggerService != null) workflowDebuggerService.NotifyHandlerInvoking(eventHandler); eventHandler(ownerActivity, eventArgs); if (workflowDebuggerService != null) workflowDebuggerService.NotifyHandlerInvoked(); } } return eventArgs.Result; } private class CodeConditionValidator : ConditionValidator { public override ValidationErrorCollection Validate(ValidationManager manager, object obj) { ValidationErrorCollection errors = new ValidationErrorCollection(); errors.AddRange(base.Validate(manager, obj)); CodeCondition codeCondition = obj as CodeCondition; if (codeCondition != null) { if (codeCondition.GetInvocationList >(CodeCondition.ConditionEvent).Length == 0 && codeCondition.GetBinding(CodeCondition.ConditionEvent) == null) { Hashtable hashtable = codeCondition.GetValue(WorkflowMarkupSerializer.EventsProperty) as Hashtable; if (hashtable == null || hashtable["Condition"] == null) errors.Add(ValidationError.GetNotSetValidationError(GetFullPropertyName(manager) + ".Condition")); } } return errors; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. namespace System.Workflow.Activities { using System; using System.Collections; using System.Collections.Generic; using System.CodeDom; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Diagnostics; using System.Reflection; using System.Workflow.ComponentModel; using System.Workflow.Runtime; using System.Workflow.ComponentModel.Compiler; using System.Workflow.ComponentModel.Serialization; using System.Workflow.Runtime.DebugEngine; [ToolboxItem(false)] [ActivityValidator(typeof(CodeConditionValidator))] [SRDisplayName(SR.CodeConditionDisplayName)] public class CodeCondition : ActivityCondition { public static readonly DependencyProperty ConditionEvent = DependencyProperty.Register("Condition", typeof(EventHandler ), typeof(CodeCondition)); [SRDescription(SR.ExpressionDescr)] [SRCategory(SR.Handlers)] [MergableProperty(false)] public event EventHandler Condition { add { base.AddHandler(ConditionEvent, value); } remove { base.RemoveHandler(ConditionEvent, value); } } #region Bind resolution Support protected override object GetBoundValue(ActivityBind bind, Type targetType) { if (bind == null) throw new ArgumentNullException("bind"); if (targetType == null) throw new ArgumentNullException("targetType"); object returnVal = bind; Activity activity = this.ParentDependencyObject as Activity; if (activity != null) returnVal = bind.GetRuntimeValue(activity, targetType); return returnVal; } #endregion public override bool Evaluate(Activity ownerActivity, IServiceProvider provider) { if (provider == null) throw new ArgumentNullException("provider"); ConditionalEventArgs eventArgs = new ConditionalEventArgs(); EventHandler [] eventHandlers = base.GetInvocationList >(CodeCondition.ConditionEvent); IWorkflowDebuggerService workflowDebuggerService = provider.GetService(typeof(IWorkflowDebuggerService)) as IWorkflowDebuggerService; if (eventHandlers != null) { foreach (EventHandler eventHandler in eventHandlers) { if (workflowDebuggerService != null) workflowDebuggerService.NotifyHandlerInvoking(eventHandler); eventHandler(ownerActivity, eventArgs); if (workflowDebuggerService != null) workflowDebuggerService.NotifyHandlerInvoked(); } } return eventArgs.Result; } private class CodeConditionValidator : ConditionValidator { public override ValidationErrorCollection Validate(ValidationManager manager, object obj) { ValidationErrorCollection errors = new ValidationErrorCollection(); errors.AddRange(base.Validate(manager, obj)); CodeCondition codeCondition = obj as CodeCondition; if (codeCondition != null) { if (codeCondition.GetInvocationList >(CodeCondition.ConditionEvent).Length == 0 && codeCondition.GetBinding(CodeCondition.ConditionEvent) == null) { Hashtable hashtable = codeCondition.GetValue(WorkflowMarkupSerializer.EventsProperty) as Hashtable; if (hashtable == null || hashtable["Condition"] == null) errors.Add(ValidationError.GetNotSetValidationError(GetFullPropertyName(manager) + ".Condition")); } } return errors; } } } } // 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
- ObjectCloneHelper.cs
- RedirectionProxy.cs
- CodeThrowExceptionStatement.cs
- ObjectDataProvider.cs
- MLangCodePageEncoding.cs
- ClientRoleProvider.cs
- UInt32Converter.cs
- TextTrailingCharacterEllipsis.cs
- AssemblyAttributes.cs
- XmlWriterTraceListener.cs
- AdornerPresentationContext.cs
- messageonlyhwndwrapper.cs
- TriState.cs
- RectAnimationBase.cs
- UnsafeNativeMethods.cs
- wgx_sdk_version.cs
- UserNameServiceElement.cs
- Base64Decoder.cs
- StreamSecurityUpgradeInitiatorAsyncResult.cs
- SystemKeyConverter.cs
- __Filters.cs
- Inflater.cs
- DecimalAnimationUsingKeyFrames.cs
- HTTPNotFoundHandler.cs
- RowUpdatedEventArgs.cs
- Drawing.cs
- UniqueID.cs
- ParameterCollection.cs
- _Win32.cs
- RelatedEnd.cs
- TypeViewSchema.cs
- BrowserDefinition.cs
- HitTestResult.cs
- ImageListImage.cs
- Run.cs
- RoutedUICommand.cs
- Function.cs
- ByteKeyFrameCollection.cs
- EntityCollectionChangedParams.cs
- MultipleFilterMatchesException.cs
- _NegotiateClient.cs
- BatchServiceHost.cs
- OracleNumber.cs
- RawStylusInput.cs
- TreeNodeStyleCollection.cs
- DataConnectionHelper.cs
- DoubleAnimationBase.cs
- ListBoxItem.cs
- XmlCDATASection.cs
- StylusEditingBehavior.cs
- CodeDirectoryCompiler.cs
- Speller.cs
- CatalogPart.cs
- SortedSet.cs
- IInstanceTable.cs
- EntityDescriptor.cs
- DiscoveryClientChannelFactory.cs
- XmlWrappingWriter.cs
- TreeBuilderBamlTranslator.cs
- Vector3D.cs
- entityreference_tresulttype.cs
- ConstNode.cs
- LinkedResource.cs
- View.cs
- StylesEditorDialog.cs
- XmlEntity.cs
- _AutoWebProxyScriptHelper.cs
- GenericWebPart.cs
- SoapSchemaExporter.cs
- SocketElement.cs
- XhtmlBasicTextViewAdapter.cs
- DescendentsWalker.cs
- TransferMode.cs
- ObjectTag.cs
- SoapSchemaImporter.cs
- TiffBitmapEncoder.cs
- WinInetCache.cs
- BoundColumn.cs
- PersonalizationAdministration.cs
- EdmPropertyAttribute.cs
- DataGridViewSelectedColumnCollection.cs
- NullExtension.cs
- CacheMode.cs
- RangeValuePattern.cs
- DecimalConverter.cs
- SamlAudienceRestrictionCondition.cs
- ExtensionWindow.cs
- Point.cs
- StateMachine.cs
- ThemeDictionaryExtension.cs
- XmlQuerySequence.cs
- Itemizer.cs
- RangeBaseAutomationPeer.cs
- ExceptionRoutedEventArgs.cs
- ellipse.cs
- SafeFileHandle.cs
- ExpressionBuilderContext.cs
- IPPacketInformation.cs
- ExpressionBuilderCollection.cs
- TypeLibraryHelper.cs