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
- ConstraintCollection.cs
- hresults.cs
- GeneralTransform3DGroup.cs
- QilLoop.cs
- PeerInvitationResponse.cs
- EmbeddedMailObject.cs
- TouchFrameEventArgs.cs
- SelectedDatesCollection.cs
- Control.cs
- InternalBase.cs
- Splitter.cs
- GeneralTransform3DCollection.cs
- XslAst.cs
- GlyphingCache.cs
- WindowsStartMenu.cs
- BeginEvent.cs
- GestureRecognitionResult.cs
- CodeAttachEventStatement.cs
- EntityStoreSchemaFilterEntry.cs
- basevalidator.cs
- NameTable.cs
- TextContainerChangedEventArgs.cs
- CodeTypeDelegate.cs
- DetailsViewDeletedEventArgs.cs
- SqlUtils.cs
- ParserOptions.cs
- WorkflowFileItem.cs
- QuaternionConverter.cs
- ScrollBar.cs
- RequiredAttributeAttribute.cs
- ThemeDictionaryExtension.cs
- LabelInfo.cs
- Compiler.cs
- DomainConstraint.cs
- Viewport2DVisual3D.cs
- ZipPackagePart.cs
- RSAPKCS1SignatureDeformatter.cs
- MethodExpr.cs
- SupportingTokenSpecification.cs
- XmlLanguageConverter.cs
- XmlIlTypeHelper.cs
- SHA512Managed.cs
- SafeEventLogWriteHandle.cs
- DeclarativeConditionsCollection.cs
- StringKeyFrameCollection.cs
- HtmlWindow.cs
- SqlRowUpdatingEvent.cs
- MSAAWinEventWrap.cs
- Size3DConverter.cs
- TTSEngineProxy.cs
- ExpressionTable.cs
- NativeObjectSecurity.cs
- ToolStripAdornerWindowService.cs
- SqlDataSourceCache.cs
- NotifyParentPropertyAttribute.cs
- ContentDisposition.cs
- GradientSpreadMethodValidation.cs
- XmlObjectSerializerWriteContext.cs
- LinkedResourceCollection.cs
- MemberAssignment.cs
- DataGridViewImageCell.cs
- ProfilePropertySettings.cs
- WsrmTraceRecord.cs
- TrackingDataItem.cs
- TdsParserSafeHandles.cs
- LocalValueEnumerator.cs
- XamlTypeMapper.cs
- ResourcesBuildProvider.cs
- HeaderPanel.cs
- MDIControlStrip.cs
- InstanceNameConverter.cs
- IPCCacheManager.cs
- LogWriteRestartAreaAsyncResult.cs
- StrokeNode.cs
- Pen.cs
- PerspectiveCamera.cs
- AttachInfo.cs
- CaseInsensitiveComparer.cs
- SmtpLoginAuthenticationModule.cs
- XmlDocumentFragment.cs
- DiagnosticEventProvider.cs
- ChtmlPageAdapter.cs
- SSmlParser.cs
- MenuStrip.cs
- ScalarOps.cs
- Content.cs
- ObjectListComponentEditor.cs
- HttpAsyncResult.cs
- SplineKeyFrames.cs
- PriorityItem.cs
- PerformanceCounterLib.cs
- CheckedPointers.cs
- securitycriticaldataClass.cs
- CodeExpressionCollection.cs
- AlternationConverter.cs
- EntityClientCacheKey.cs
- TableAutomationPeer.cs
- XmlSchemaGroupRef.cs
- SimplePropertyEntry.cs
- Win32.cs