Workflow 4.0和System.Attribute

时间:2011-05-20 08:10:47

标签: c# .net workflow-foundation-4

工作流似乎是直接从Xaml创建的。那么如何在我的工作流类中包含System.Attribute?

我能想到的唯一方法就是废话:

每个 Activity.xaml:

提供相应的代码文件
[MyCustomAttribute("hello")]
public abstract class MyPointlessWorkflowBase : System.Activity
{

}

然后让我的.xaml从基地继承(我甚至不知道这是否可行)?但这很糟糕,因为我需要为需要该属性的每个工作流添加一个额外的类。

无论如何,在你将.xaml打到它之前编码活动就像它们是正常的类一样?

1 个答案:

答案 0 :(得分:3)

XAML文件在编译之前会生成带有partial关键字的类,因此您可以创建具有相同名称的分部类并在其中添加属性。

[MyCustomAttribute("hello")]
public partial class MyWorkflow : Activity
{
}

或者,您可以使用x:ClassAttributes元素在XAML中添加属性,并以这种方式添加它们。

<p:Activity x:Class="WorkflowConsoleApplication1.MyWorkflow"
            xmlns:s="clr-namespace:System;assembly=mscorlib"
            xmlns:my="......"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <x:ClassAttributes>
      <my:MyCustomAttribute>
        <x:Arguments>
          <s:String>hello</s:String>
        </x:Arguments>
      </my:MyCustomAttribute>
    </x:ClassAttributes>
</p:Activity>