0

Как выполнить действие кода изнутри действия кода?Активность вызывающего кода в рамках действия кода

public sealed class ApprovalRequired : CodeActivity 
{ 

,, 
EmailActivity ea = new EmailActivity() // this is a code activity 
ea.Sender = ... 
ea.Rec = ... 
ea.Subject = "Approved" 

// ea.Execute() - нет никакого способа, чтобы вызвать метод выполнения ..

}

ответ

1

Самый простой подход будет заключаться в подготовке деятельности XAML на основе, которая имеет активность последовательности с вашим Утверждение деятельность где-то в нем. Что-то вроде этого:

enter image description here

Edit: Для того, чтобы на самом деле есть «внутреннее» деятельность выполняется из другой деятельности, ваш ApprovalRequired класс должен наследовать от NativeActivity класса первой, и переопределить метод CacheMetadata к пусть приложение рабочего процесса знает, что будет выполняться дочерняя активность. ApprovalRequired деятельность будет выглядеть следующим образом:

namespace WCA.Scratch 
{ 
    using System.Activities; 

    public sealed class ApprovalRequired : NativeActivity 
    { 
     public ApprovalRequired() 
     { 
      this.Email = new Email(); 
     } 

     public Email Email 
     { 
      get; 
      set; 
     } 

     protected override void CacheMetadata(NativeActivityMetadata metadata) 
     { 
      metadata.AddImplementationChild(this.Email); 
     } 

     protected override void Execute(NativeActivityContext context) 
     { 
      // Some logic here... 
      this.Email.Body = "My email body."; 
      this.Email.From = "[email protected]"; 
      this.Email.To = "[email protected]"; 
      this.Email.Subject = "Approval Request"; 
      context.ScheduleActivity(this.Email); 
      // Some other logic here... 
     } 
    } 
} 

Имейте в виду, что вам нужно вручную регистрировать какие-либо аргументы активности или переменные активности в CacheMetadata методе ApprovalRequired «s, а также.