2

Этот простой код не со следующей ошибкой:Как назначить аргумент переменной в Workflow Foundation 4.0?

Следующие ошибки были обнаружены при обработке дерева рабочего процесса:

«ArgumentValue»: Аргумент с именем «Параметр» не может быть найден на деятельности владеющих этими частными детьми. ArgumentReference и ArgumentValue должны использоваться только в теле определения Activity.

Я также попытался VisualBasivValue ("Параметр") вместо ArgumentValue, и ошибка была:

Следующие ошибки были обнаружены при обработке дерева рабочего процесса:

'VisualBasicValue': компилятор ошибка (ы) встретила выражение обработки «Параметр». 'Параметр' не объявлен. Он может быть недоступен из-за его уровня защиты.

Как это сделать правильно?

Я пытался создать что-то подобное в Xaml, и она работает, вот код:

<Assign sap:VirtualizedContainerService.HintSize="242,58"> 
    <Assign.To> 
     <OutArgument x:TypeArguments="x:String">[variable]</OutArgument> 
    </Assign.To> 
    <Assign.Value> 
     <InArgument x:TypeArguments="x:String">[Parameter]</InArgument> 
    </Assign.Value> 
</Assign> 

Похоже, он ссылается параметр как-то, но как ...

Как я могу сделать это в коде? Вот мой простой сценарий:

public class RootActivity : NativeActivity 
{ 
    public InArgument<string> Parameter { get; set; } 

    public Activity Activity { get; set; } 

    public RootActivity() 
    { 
     var variable = new Variable<string>("V1", "This is my variable!"); 
     var activity = new Sequence 
      { 
       Variables = {variable}, 
       Activities = 
       { 
        new Assign<string> 
        { 
         To = new OutArgument<string>(variable), 
         Value = new InArgument<string>(
          new ArgumentValue<string>("Parameter")); 
        }, 
       } 
      }; 

     this.Activity = activity; 
    } 

    protected override void Execute(NativeActivityContext context) 
    { 
     context.ScheduleActivity(this.Activity); 
    } 
} 

Большое спасибо за любую помощь!

ответ

0

Я не совсем уверен, но есть одна вещь, которую я заметил.

Я обнаружил, что попытка настроить активность внутри конструктора часто не работает. Целесообразно сделать это в методе Create IActivityTemplateFactory.

Измените свой код, чтобы реализовать этот метод, а затем переместите код из конструктора в метод Create. Это может быть не вся ваша проблема, но это может быть один из них.

0

Попробуйте это:

new Assign<string> 
{ 
    To = new OutArgument<string>(variable), 
    Value = new InArgument<string>(
     env => Parameter.Get(env)); 
}, 
1

выражение, которое вы установили в To и Value фактически VisualBasicReference и VisualBasicValue. Эквивалентным кодом для вашего XAML является:

new Assign<string> 
     { 
      To = new VisualBasicReference<string>("V1"), 
      Value = new VisualBasicValue<string>("Parameter") 
     }; 
Смежные вопросы