e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
89 lines
3.1 KiB
C#
89 lines
3.1 KiB
C#
namespace System.Workflow.Activities
|
|
{
|
|
using System;
|
|
using System.Text;
|
|
using System.Reflection;
|
|
using System.Collections;
|
|
using System.CodeDom;
|
|
using System.ComponentModel;
|
|
using System.ComponentModel.Design;
|
|
using System.Drawing;
|
|
using System.Workflow.ComponentModel;
|
|
using System.Workflow.ComponentModel.Design;
|
|
using System.Workflow.ComponentModel.Serialization;
|
|
using System.Collections.Generic;
|
|
using System.Workflow.ComponentModel.Compiler;
|
|
|
|
[SRDescription(SR.CodeActivityDescription)]
|
|
[ToolboxItem(typeof(ActivityToolboxItem))]
|
|
[Designer(typeof(CodeDesigner), typeof(IDesigner))]
|
|
[ToolboxBitmap(typeof(CodeActivity), "Resources.code.png")]
|
|
[DefaultEvent("ExecuteCode")]
|
|
[SRCategory(SR.Standard)]
|
|
[ActivityValidator(typeof(CodeActivityValidator))]
|
|
[Obsolete("The System.Workflow.* types are deprecated. Instead, please use the new types from System.Activities.*")]
|
|
public sealed class CodeActivity : Activity
|
|
{
|
|
#region Constructors
|
|
|
|
public CodeActivity()
|
|
{
|
|
}
|
|
|
|
public CodeActivity(string name)
|
|
: base(name)
|
|
{
|
|
}
|
|
|
|
#endregion
|
|
|
|
public static readonly DependencyProperty ExecuteCodeEvent = DependencyProperty.Register("ExecuteCode", typeof(EventHandler), typeof(CodeActivity));
|
|
|
|
protected override sealed ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
|
|
{
|
|
base.RaiseEvent(CodeActivity.ExecuteCodeEvent, this, EventArgs.Empty);
|
|
|
|
return ActivityExecutionStatus.Closed;
|
|
}
|
|
|
|
[SRCategory(SR.Handlers)]
|
|
[SRDescription(SR.UserCodeHandlerDescr)]
|
|
[MergableProperty(false)]
|
|
public event EventHandler ExecuteCode
|
|
{
|
|
add
|
|
{
|
|
base.AddHandler(ExecuteCodeEvent, value);
|
|
}
|
|
remove
|
|
{
|
|
base.RemoveHandler(ExecuteCodeEvent, value);
|
|
}
|
|
}
|
|
|
|
private class CodeActivityValidator : ActivityValidator
|
|
{
|
|
public override ValidationErrorCollection Validate(ValidationManager manager, object obj)
|
|
{
|
|
ValidationErrorCollection errors = new ValidationErrorCollection();
|
|
|
|
CodeActivity code = obj as CodeActivity;
|
|
if (code == null)
|
|
throw new InvalidOperationException();
|
|
|
|
// This violates the P || C validation condition, but we are compiling with csc.exe here!
|
|
if (code.GetInvocationList<EventHandler>(CodeActivity.ExecuteCodeEvent).Length == 0 &&
|
|
code.GetBinding(CodeActivity.ExecuteCodeEvent) == null)
|
|
{
|
|
Hashtable hashtable = code.GetValue(WorkflowMarkupSerializer.EventsProperty) as Hashtable;
|
|
if (hashtable == null || hashtable["ExecuteCode"] == null)
|
|
errors.Add(ValidationError.GetNotSetValidationError("ExecuteCode"));
|
|
}
|
|
|
|
errors.AddRange(base.Validate(manager, obj));
|
|
return errors;
|
|
}
|
|
}
|
|
}
|
|
}
|