definir e consumir representantes de atividade no Designer de Fluxo de Trabalho
O .NET Framework 4.5 inclui um designer pronto para uso para a atividade InvokeDelegate. Este criador pode ser usado para atribuir os representantes para a atividade que derivam de ActivityDelegate, como ActivityAction ou ActivityFunc<TResult>.
Defina um representante de atividades
Crie um projeto de Aplicativo de console de fluxo de trabalho.
Observação
Se você não vir os modelos de projeto de Fluxo de trabalho, instale o componente Windows Workflow Foundation do Visual Studio. Para obter instruções detalhadas, consulte Instalar o Windows Workflow Foundation.
Clique com o botão direito do mouse no projeto no Gerenciador de Soluções e selecione Adicionar>Novo Item. Selecione a categoria Fluxo de Trabalho e, em seguida, selecione o modelo de item Atividade. Dê à nova atividade o nome MyForEach.xaml e selecione OK.
A atividade é aberta no designer de fluxo de trabalho.
No Designer de Fluxo de Trabalho, clique na guia Argumentos.
Clique em Criar Argumento. Dê ao novo argumento o nome Itens.
Na coluna Tipo de argumento, selecione Matriz de [T].
No navegador de tipos, selecione Objeto e, em seguida, OK.
Clique em Criar Argumento novamente. Nomeie o novo argumento Corpo. Na coluna Direção para o novo argumento, selecione Propriedade.
Na coluna Tipo de Argumento, selecione Procurar tipos
No navegador de tipo, insira ActivityAction no campo Nome do Tipo. Selecione ActivityAction<T> no modo de exibição de árvore. Selecione Objeto na lista suspensa que aparece para atribuir o tipo ActivityAction<Objeto> ao argumento.
Arraste uma atividade While da seção Fluxo de Controle da caixa de ferramentas para a superfície do designer.
Selecione a atividade While e selecione a guia Variáveis.
Selecione Criar Variável. Dê à nova variável o nome Índice.
Na coluna Tipo de variável, selecioneInt32. Deixe o Escopo como Quando e a coluna Padrão em branco.
Defina a propriedade Condição da atividade While para índice < Items.Length;.
Arraste uma atividade InvokeDelegate da seção Primitivas da caixa de ferramentas para o Corpo da atividade While.
Selecione Corpo na lista suspensa de delegados.
Na grade Propriedades para a atividade InvokeDelegate, clique no botão … na propriedade Argumentos de Delegados.
Na coluna Valor do argumento chamado Argumento, insira Items[Index]. Clique em Ok para fechar a caixa de diálogo DelegateArguments.
Arraste uma atividade de Assign na linha horizontal abaixo de atividade de InvokeDelegate . A atividade Assign é criada, e uma atividade Sequence é criada automaticamente para conter as duas atividades na seção Corpo da atividade MyForEach. A sequência é necessária, pois a seção Corpo pode conter apenas uma atividade. Criar automaticamente uma atividade Sequence é um novo recurso do .NET Framework 4.5.
Defina a propriedade Para da atividade Assign para índice. Defina a propriedade Valor da atividade Atribuir como index+1.
A atividade personalizada MyForEach invoca uma atividade arbitrária uma vez para cada valor passado a ela por meio da coleção de Itens, com os valores na coleção como entradas para atividades.
Use a atividade personalizado em um fluxo de trabalho
Compile o projeto pressionando Ctrl+Shift+B.
No Gerenciador de Soluções, abra Workflow1.xaml no designer.
Arraste uma atividade MyForEach da caixa de ferramentas para a superfície do designer. A atividade está em uma seção da caixa de ferramentas com o mesmo nome que o projeto.
Defina a propriedade Itens da atividade MyForEach como new Object[] {1, "abc"}.
Arraste uma atividade WriteLine da seção Primitivos da caixa de ferramentas para a seção Delegate:Body da atividade MyForEach.
Defina a propriedade Texto da atividade WriteLine como Argument.ToString().
Quando o fluxo de trabalho é executado, o console mostra a seguinte saída:
1abc