问题
In Windows Workflow Foundation 3.x, you used to be able to create a BaseWorkflow class where you could define some properties in that workflow.
And then when you create a workflow you can say it derives from BaseWorkflow class so it inherits all the properties from the base workflow.
Can we achieve the same thing in Windows Workflow Foundation 4 (WF 4)? Like defining InArgument and OutArgument on a BaseActivity then create another Activity that derives from the BaseActivity.
I tried by modify the XAML from let's say <Activity></Activity> to like <BaseActivity></BaseActivity> ... that was the way we did it in WF 3.x.
It doesn't seem to work in WF 4.
回答1:
Found a solution to this. It's actually quite easy. The class generated by the XAML declaration is marked as partial
so you can create a class (also marked partial
) for your activity (workflow) base. Then in XAML, just change the class attribute on your activity to the full namespace of the class you just created.
Base Activity Example:
public partial class OurBaseWorkflow : Activity
{
public InArgument<string> StandardInput { get;set; }
}
XAML example:
<p:Activity x:Class="MyNamespace.OurBaseWorkflow"
xmlns:s="clr-namespace:System;assembly=mscorlib"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
...
</p:Activity>
With this method, you can define both in and out arguments on the base class and they show up for your derived activities as well.
回答2:
Yes, you can create a BaseActivity
and define its InArguments and OutArguments. You can then create a new class, say Activity1:BaseActivity
and it still has BaseActivity
's InArguments and OutArguments
来源:https://stackoverflow.com/questions/4620242/windows-workflow-foundation-4-create-base-activity