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
- BaseInfoTable.cs
- ChannelManagerBase.cs
- MergeFilterQuery.cs
- DocumentGridContextMenu.cs
- QuadraticBezierSegment.cs
- ServiceReference.cs
- OracleException.cs
- CreateSequence.cs
- TransformDescriptor.cs
- TdsRecordBufferSetter.cs
- OleDbCommandBuilder.cs
- SqlCommandBuilder.cs
- WebPartHelpVerb.cs
- TextParagraphCache.cs
- ClockController.cs
- Menu.cs
- MetafileEditor.cs
- BuildProvidersCompiler.cs
- SmtpTransport.cs
- Margins.cs
- SqlCommandSet.cs
- CfgArc.cs
- XmlMtomReader.cs
- WebBrowsableAttribute.cs
- AppearanceEditorPart.cs
- DataRowExtensions.cs
- XmlSchemaComplexType.cs
- securitymgrsite.cs
- RadialGradientBrush.cs
- ProxyElement.cs
- Interop.cs
- FormViewPagerRow.cs
- ConfigPathUtility.cs
- EntityCommandCompilationException.cs
- ExpandedProjectionNode.cs
- DataBindingExpressionBuilder.cs
- Rijndael.cs
- XmlJsonWriter.cs
- ItemDragEvent.cs
- SimpleFieldTemplateFactory.cs
- DataGridColumnHeaderAutomationPeer.cs
- DSACryptoServiceProvider.cs
- BindingContext.cs
- UserControlAutomationPeer.cs
- ChangesetResponse.cs
- ConfigurationProperty.cs
- assemblycache.cs
- recordstatefactory.cs
- TableItemPattern.cs
- Marshal.cs
- HotSpotCollection.cs
- Inflater.cs
- Errors.cs
- GridItemCollection.cs
- EmbeddedMailObjectsCollection.cs
- CommandHelper.cs
- AxImporter.cs
- Compiler.cs
- ScriptingJsonSerializationSection.cs
- TreeNodeSelectionProcessor.cs
- MemberNameValidator.cs
- ComponentCommands.cs
- TemplateBuilder.cs
- TypeConverter.cs
- DocumentAutomationPeer.cs
- AdjustableArrowCap.cs
- PersonalizationProviderHelper.cs
- CacheDependency.cs
- SpAudioStreamWrapper.cs
- TimersDescriptionAttribute.cs
- CachingHintValidation.cs
- SweepDirectionValidation.cs
- XPathScanner.cs
- SyndicationSerializer.cs
- DateTimeConstantAttribute.cs
- TableRow.cs
- DBConcurrencyException.cs
- ArrangedElementCollection.cs
- TraceHandlerErrorFormatter.cs
- Argument.cs
- CleanUpVirtualizedItemEventArgs.cs
- ToolStripItemClickedEventArgs.cs
- RequestNavigateEventArgs.cs
- WebFormsRootDesigner.cs
- ConfigXmlAttribute.cs
- TextEncodedRawTextWriter.cs
- XmlNamespaceMappingCollection.cs
- ModulesEntry.cs
- LogicalExpr.cs
- PageContentCollection.cs
- FaultReasonText.cs
- FontCollection.cs
- WebPartDisplayModeCollection.cs
- SqlDataReaderSmi.cs
- Viewport3DVisual.cs
- FontInfo.cs
- wgx_exports.cs
- DictionaryTraceRecord.cs
- FlowDocument.cs
- ExpressionConverter.cs