2011-12-20 4 views
0

wf4에서 사용자 지정 활동을 만들려고 노력하고 있습니다. 나는 튜토리얼/예제를 발견하고 이것을 사용하여 시작했지만 문제가있는 것 같다.컨텍스트를 사용할 수 없습니까?

public sealed class SaveRequest : NativeActivity { 
    // Define an activity input argument of type string 
    [RequiredArgument] 
    public InArgument<Request> Request { get; set; } 

    // If your activity returns a value, derive from CodeActivity<TResult> 
    // and return the value from the Execute method. 
    protected override void Execute(NativeActivityContext context) { 
     Request Request = this.Request.Get(context); 
     Request.Id = Guid.NewGuid(); 
     Request.Title = "New Test"; 
     RequestMonkeyRepository Rep = new RequestMonkeyRepository(); 
     Rep.save(Request); 
    } 
} 

GUID를 할당 할 때 위의 코드는 항상 null 개체 인스턴스로 오류가 발생합니다. 내가 havent 그 워크 플로에 요청 개체를 통과했기 때문에 내가 추측하지만, 나는 그들이 예제에서 이것을 어떻게 볼 수 없습니다.

임 콘솔 응용 프로그램을 실행하고 내 실행 코드 당신은 요청 객체의 인스턴스를 반환 일부 표현 워크 플로우에 요청 InArgument를 설정 했

WorkflowInvoker.Invoke(new RequestMonkeyTest1.TestWorkflow()); 
+0

'요청'이 마법으로 설정되지 않았습니다. * something *에 바인딩해야합니다. 그 * 무언가 *는 어떻게 든 * 워크 플로우에 전달되어야합니다. – Will

+0

@ 감사합니다. 나는 그들이이 예에서 어떻게했는지는 알지 못한다. 그러나 그것을 생각해 냈다고 생각한다. 내가 idictionary 개체를 워크 플로에 전달합니다. 아직 없지만 닫기가 –

+0

워크 플로에 전달 된 Request 개체의 인덱스로 문자열 값을 제공했는지 확인하십시오. SaveRequest.Request는 해당 값에 바인딩되어야합니다. 문자열 인덱스는 워크 플로의 루트에 정의 된 인수의 이름이어야하며 Request는이 인수에 바인딩되어야합니다. 따라서 이름으로 인스턴스가 워크 플로로 전달되고 워크 플로에서 인수가 채워지고 SaveRequest가 실행될 때 바인딩이 평가되고 Request 인스턴스가 워크 플로 컨텍스트에서 검색됩니다. – Will

답변

0

이하? 표현식에 "새 Request()"를 추가하고 워크 플로우를 다시 실행하십시오.

+0

psst, [방금 wf4 관련 버그 리포트 제출] (https://connect.microsoft.com/VisualStudio/feedback/details/715057/wf-activity-validation-does-not-respect-object-oriented-principals- 특정 상황에서). 보고 잠시 생각을하고 의견을 말하면 감사하겠습니다. 첨부 된 솔루션을 다운로드하기 전에 잠시 시간을 할애 할 수 있습니다. – Will

+0

psst psst 방금 "어셈블리 참조 및 내부 구현을 위해 가져온 네임 스페이스"*가 의미하는 바를 알아 냈습니다. ** hocus pocus를 의미합니다! 유효성 검사가 올바르게 작동합니다! ** – Will

관련 문제