Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SqlDependency.cs
- TrailingSpaceComparer.cs
- Setter.cs
- NotifyIcon.cs
- VectorCollectionConverter.cs
- SchemeSettingElement.cs
- MemberPath.cs
- DataControlPagerLinkButton.cs
- SqlUserDefinedAggregateAttribute.cs
- XslTransform.cs
- XmlAtomicValue.cs
- ZipIOModeEnforcingStream.cs
- IdentityReference.cs
- FrameworkTextComposition.cs
- XmlWhitespace.cs
- EasingQuaternionKeyFrame.cs
- ObjectSecurity.cs
- EntityViewContainer.cs
- ScrollEventArgs.cs
- ArcSegment.cs
- MetafileHeaderWmf.cs
- XmlValidatingReaderImpl.cs
- AliasedSlot.cs
- PropVariant.cs
- odbcmetadatafactory.cs
- IItemContainerGenerator.cs
- Util.cs
- AnimationException.cs
- URLString.cs
- MetadataFile.cs
- ScriptServiceAttribute.cs
- LinearQuaternionKeyFrame.cs
- PropertyEmitterBase.cs
- IConvertible.cs
- SecureUICommand.cs
- xmlsaver.cs
- SafeArrayRankMismatchException.cs
- DtrList.cs
- SerialPort.cs
- MarkupCompiler.cs
- StructuredTypeInfo.cs
- FormViewRow.cs
- ChangePasswordDesigner.cs
- NoClickablePointException.cs
- WebPartZoneCollection.cs
- ResourceReferenceExpression.cs
- webbrowsersite.cs
- ExtendedProtectionPolicyTypeConverter.cs
- TextTreeUndoUnit.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- TextTrailingCharacterEllipsis.cs
- PeerDefaultCustomResolverClient.cs
- SQLSingle.cs
- _DigestClient.cs
- SafeWaitHandle.cs
- RelationshipWrapper.cs
- WebPartConnectionsConnectVerb.cs
- MexHttpBindingElement.cs
- ThicknessAnimationUsingKeyFrames.cs
- AncestorChangedEventArgs.cs
- SqlDataSourceConfigureFilterForm.cs
- TemplateControlParser.cs
- ScrollChrome.cs
- MiniModule.cs
- EntityDataSourceEntityTypeFilterItem.cs
- TypeConverterAttribute.cs
- XmlObjectSerializerWriteContextComplex.cs
- GridViewRowPresenter.cs
- Timeline.cs
- QuaternionAnimationBase.cs
- AbsoluteQuery.cs
- EntityContainerRelationshipSet.cs
- ServiceContractDetailViewControl.cs
- control.ime.cs
- InkSerializer.cs
- NativeMethods.cs
- StrokeNode.cs
- BindingNavigatorDesigner.cs
- String.cs
- TypeUnloadedException.cs
- DBSchemaRow.cs
- ConfigurationElement.cs
- Emitter.cs
- RequestCacheValidator.cs
- XPathScanner.cs
- QueuePathEditor.cs
- LayoutUtils.cs
- LinkedResource.cs
- ListParaClient.cs
- SiteMapDataSourceView.cs
- RequestCachePolicy.cs
- ItemCollection.cs
- WebBaseEventKeyComparer.cs
- OLEDB_Util.cs
- CompModHelpers.cs
- MetadataUtilsSmi.cs
- CategoryAttribute.cs
- PingOptions.cs
- BitmapEffectGroup.cs
- CornerRadiusConverter.cs