DefaultValueAttribute
에 보이는 것 어느 워크 플로 런타임이나 워크 플로우 디자이너
Workflow Console: Starting Workflow...
Could not start workflow.
Message: Failed to start workflow DynamicActivity.
Exception message: The following errors were encountered while processing the workflow tree: 'DynamicActivity': The private implementation of activity '1: DynamicActivity' has the following validation error: Value for a required activity argument 'JobStatus' was not supplied.
Stack trace: at System.Activities.Validation.ActivityValidationServices.ThrowIfViolationsExist(IList`1 validationErrors) at System.Activities.Hosting.WorkflowInstance.ValidateWorkflow(WorkflowInstanceExtensionManager extensionManager) at System.Activities.Hosting.WorkflowInstance.RegisterExtensionManager(WorkflowInstanceExtensionManager extensionManager) at System.Activities.WorkflowApplication.EnsureInitialized() at System.Activities.WorkflowApplication.Enqueue(InstanceOperation operation, Boolean push) at System.Activities.WorkflowApplication.WaitForTurn(InstanceOperation operation, TimeSpan timeout) at System.Activities.WorkflowApplication.InternalRun(TimeSpan timeout, Boolean isUserRun) at System.Activities.WorkflowApplication.Run()
감사합니다. 속성을 검색하려면 성능에 비용이 많이 드는 반사가 필요합니다. 또한 그것은 속성의 목적이 아닙니다.
어쨌든 변수를 기본값으로 초기화 할 수 있습니다. 생성자에서 예를 들면 다음과 같습니다.
public class MyCodeActivity : CodeActivity
{
public MyCodeActivity()
{
JobStatus = "All";
}
}
또는 접근자를 통해 값을 강제 설정합니다. 다음과 같은 것 :
이러한 접근 방식은 원하는 동작에 맞는 방법을 사용하십시오. 두 경우 모두 값을 XAML을 통해 항상 수정할 수 있으므로 런타임에 대한 작은 검사가 유용 할 수 있습니다.
protected override void Execute(CodeActivityContext context)
{
string text = context.GetValue(this.Text);
if (text == null)
{
text = "All";
}
Console.WriteLine(text);
}
그렇다면 'DefaultValue'를 사용하지 않으면 컴파일 오류가 발생한다고 말하는 것입니까? –
아니요 컴파일 오류가 발생하지 않습니다. 프로그램을 실행하면 워크 플로우가 실행되지 않습니다. 나는 오류 메시지를 1 분 안에 게시 할 것이다. – user1298925
왜 먼저 유효성 검사를하지 않고 워크 플로를 실행하고 있습니까? 워크 플로 디자이너가 InArguments에 값이 필요하다는 경고를하지 않습니까? – Joao