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
- MeasureData.cs
- DataGridColumnCollection.cs
- IFlowDocumentViewer.cs
- LinqDataSourceDisposeEventArgs.cs
- ButtonChrome.cs
- WindowShowOrOpenTracker.cs
- templategroup.cs
- ConnectionPoolManager.cs
- MsmqIntegrationSecurityElement.cs
- WebPartEditorOkVerb.cs
- DocumentPageTextView.cs
- MarshalByRefObject.cs
- CodeGotoStatement.cs
- ObjectListDesigner.cs
- ValidateNames.cs
- MonikerHelper.cs
- JpegBitmapDecoder.cs
- DataGridView.cs
- VariableAction.cs
- TagPrefixCollection.cs
- EmptyCollection.cs
- TiffBitmapDecoder.cs
- CFStream.cs
- MarshalByRefObject.cs
- PermissionSetTriple.cs
- PipeStream.cs
- EventEntry.cs
- LocalBuilder.cs
- HierarchicalDataTemplate.cs
- CompositeDataBoundControl.cs
- IdentifierService.cs
- FilteredDataSetHelper.cs
- FormatException.cs
- TypeContext.cs
- LabelEditEvent.cs
- httpapplicationstate.cs
- EventProviderWriter.cs
- ListViewItemCollectionEditor.cs
- LoginView.cs
- Metadata.cs
- DataGridViewCellStyle.cs
- IBuiltInEvidence.cs
- EventTrigger.cs
- ExpandedProjectionNode.cs
- RoutingChannelExtension.cs
- IxmlLineInfo.cs
- ArrayList.cs
- TableStyle.cs
- ToolboxItemFilterAttribute.cs
- ExpressionPrefixAttribute.cs
- WebPermission.cs
- TemplateKey.cs
- PipelineModuleStepContainer.cs
- CharEnumerator.cs
- HttpCapabilitiesBase.cs
- GridViewEditEventArgs.cs
- TypeCodeDomSerializer.cs
- ListViewEditEventArgs.cs
- ReflectPropertyDescriptor.cs
- ColorConvertedBitmap.cs
- RuntimeConfig.cs
- TextLine.cs
- DataGridViewComboBoxCell.cs
- InvalidPrinterException.cs
- ImageFormat.cs
- ScrollEventArgs.cs
- TextElementCollectionHelper.cs
- PrintEvent.cs
- MSG.cs
- ProfileProvider.cs
- DelegateHelpers.cs
- MessageQueueTransaction.cs
- RequestCacheEntry.cs
- CodePrimitiveExpression.cs
- Renderer.cs
- UrlPath.cs
- AuthenticationModuleElementCollection.cs
- Authorization.cs
- EntityContainerAssociationSet.cs
- DbConnectionPoolIdentity.cs
- Crypto.cs
- EditCommandColumn.cs
- CapabilitiesRule.cs
- SingleObjectCollection.cs
- SslSecurityTokenParameters.cs
- TransformedBitmap.cs
- CustomTokenProvider.cs
- EventLog.cs
- LiteralControl.cs
- ResourceDictionary.cs
- ApplicationBuildProvider.cs
- ComboBoxDesigner.cs
- _DisconnectOverlappedAsyncResult.cs
- Point3DCollectionConverter.cs
- DesignerTransactionCloseEvent.cs
- StaticTextPointer.cs
- Duration.cs
- InstanceDataCollectionCollection.cs
- HostExecutionContextManager.cs
- ObjectRef.cs