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
- DataGridLinkButton.cs
- WebPartEditorApplyVerb.cs
- Exceptions.cs
- TabControlCancelEvent.cs
- ImageFormat.cs
- WorkflowFormatterBehavior.cs
- HtmlInputSubmit.cs
- NodeLabelEditEvent.cs
- TextEffectCollection.cs
- Menu.cs
- CryptoHelper.cs
- CookieParameter.cs
- ArgumentOutOfRangeException.cs
- Rect3DValueSerializer.cs
- PerfService.cs
- AssociationSetMetadata.cs
- VirtualizedItemProviderWrapper.cs
- Rect3DConverter.cs
- BaseParaClient.cs
- DocumentPageView.cs
- Win32MouseDevice.cs
- InvalidWMPVersionException.cs
- NavigationCommands.cs
- FullTextLine.cs
- StyleModeStack.cs
- ForeignKeyConstraint.cs
- TraceContext.cs
- infer.cs
- HijriCalendar.cs
- CannotUnloadAppDomainException.cs
- TrailingSpaceComparer.cs
- SpecularMaterial.cs
- HttpListener.cs
- ListViewContainer.cs
- CodePrimitiveExpression.cs
- ListArgumentProvider.cs
- loginstatus.cs
- TraceUtility.cs
- ISO2022Encoding.cs
- SqlUserDefinedAggregateAttribute.cs
- WebControlsSection.cs
- NCryptNative.cs
- ZeroOpNode.cs
- DecoratedNameAttribute.cs
- DataGrid.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- Brushes.cs
- xmlfixedPageInfo.cs
- SimplePropertyEntry.cs
- LocatorGroup.cs
- MLangCodePageEncoding.cs
- ImageCreator.cs
- RegexMatch.cs
- XmlSchemaAll.cs
- ProcessThread.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- TraceUtils.cs
- IfJoinedCondition.cs
- ColorTransform.cs
- XslAst.cs
- ViewStateChangedEventArgs.cs
- DeviceContext.cs
- TemplateParser.cs
- ToolStripRenderer.cs
- WsiProfilesElementCollection.cs
- TextTreeTextNode.cs
- RotateTransform.cs
- X509RawDataKeyIdentifierClause.cs
- ObjectFullSpanRewriter.cs
- PtsHelper.cs
- Debug.cs
- ObjectCloneHelper.cs
- IdnMapping.cs
- SessionStateItemCollection.cs
- WinFormsSpinner.cs
- Token.cs
- DispatcherTimer.cs
- BypassElementCollection.cs
- ExternalException.cs
- EntityCommandCompilationException.cs
- XslNumber.cs
- ObjectItemCollectionAssemblyCacheEntry.cs
- QueryConverter.cs
- RSAOAEPKeyExchangeFormatter.cs
- IntAverageAggregationOperator.cs
- XamlHostingSectionGroup.cs
- DecoderBestFitFallback.cs
- TemplateManager.cs
- MultiByteCodec.cs
- BinaryObjectReader.cs
- CharacterBuffer.cs
- RegexTree.cs
- InteropTrackingRecord.cs
- XPathNodePointer.cs
- EventTrigger.cs
- LeftCellWrapper.cs
- ParallelSeparator.xaml.cs
- QilFunction.cs
- ZoneMembershipCondition.cs
- TitleStyle.cs