Рабочий процесс 4.0 и System.Attribute

рабочие процессы, кажется, создаются прямо из Xaml. Как же тогда можно включить System.Attribute в мои классы рабочего процесса?

Единственные способы, которые я могу придумать, немного дерьмовые:

Подготовьте соответствующий файл кода для каждого Activity.xaml:

[MyCustomAttribute("hello")]
public abstract class MyPointlessWorkflowBase : System.Activity
{

}

И затем мой .xaml наследуется от базы (я даже не знаю, возможно ли это)? Но это отстой, так как у меня есть дополнительный класс для каждого рабочего процесса, для которого требуется атрибут.

можно ли как-то закодировать действия, как если бы они были обычными классами, прежде чем вы набросите на них .xaml?


person peteisace    schedule 20.05.2011    source источник


Ответы (1)


Файл XAML создает класс с ключевым словом partial перед его компиляцией, поэтому вы можете создать разделяемый класс с тем же именем и добавить туда атрибут.

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

В качестве альтернативы вы можете добавить атрибут в XAML с помощью элемента x:ClassAttributes и добавить их таким образом.

<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>
person Maurice    schedule 20.05.2011
comment
Вы действительно сделали это? Создает ли компилятор это .g. скрытое частичное определение класса? И будет ли реализовано System.Windows.Markup.IComponentConnector? И можете ли вы ссылаться на компоненты через их x:Name? - person ; 20.05.2011
comment
Я делаю первый стиль достаточно часто. Второй, в XAML, нет. Существует файл MyWorkflow.g.cs, но он не реализует IComponentConnector. Здесь также генерируется атрибут. - person Maurice; 20.05.2011