2011-12-20 11 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); 
    } 
} 

nullオブジェクトインスタンスと常にエラーアウトGUIDを割り当てる上記のコード。私はhaventがワークフローに要求オブジェクトを渡したので、私はそれを推測していますが、私は彼らがこの例でどのようにしたかを見ることができません。

イムコンソールアプリケーションを実行しているし、私の実行コードは、あなたは、Requestオブジェクトのインスタンスを返すいくつかの式にあなたのワークフローで要求InArgumentを設定しました

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

「リクエスト」は魔法によって設定されていません。それを* something *にバインドする必要があります。その*何か*は何とか*ワークフローに渡されなければなりません。 – Will

+0

@ありがとう。私は彼らが例でそれをした方法を見ることができませんが、iveはそれを考え出したと考えます。私はidictionaryオブジェクトをワークフローに渡します。まだありませんが近いです –

+0

ワークフローに渡されるリクエストオブジェクトのインデックスとして文字列値を指定したことに注目してください。 SaveRequest.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

関連する問題