2

この単純なコードは、次のエラーで失敗します。

ワークフロー ツリーの処理中に次のエラーが発生しました:

'ArgumentValue': 'Parameter' という名前の引数が、これらのプライベートな子を所有するアクティビティで見つかりませんでした。ArgumentReference と ArgumentValue は、アクティビティ定義の本体でのみ使用する必要があります。

ArgumentValue の代わりに VisualBasivValue("Parameter") も試しましたが、エラーは次のとおりです。

ワークフロー ツリーの処理中に次のエラーが発生しました:

'VisualBasicValue': 式 "Parameter" の処理中にコンパイラ エラーが発生しました。「パラメータ」が宣言されていません。保護レベルにより、アクセスできない場合があります。

適切に行う方法は?

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);
    }
}

助けてくれてありがとう!

4

3 に答える 3

1

To と Value に設定する式は、実際には VisualBasicReference と VisualBasicValue です。XAML の同等のコードは次のとおりです。

new Assign<string>
        {
            To = new VisualBasicReference<string>("V1"),
            Value = new VisualBasicValue<string>("Parameter")
        };
于 2012-08-24T15:18:11.540 に答える
0

正確にはわかりませんが、気付いたことが1つあります。

コンストラクター内でアクティビティーを構成しようとしても、うまくいかないことがよくあります。IActivityTemplateFactoryのCreateメソッド内でこれを行うことをお勧めします。

このメソッドを実装するようにコードを変更してから、コードをコンストラクターからCreateメソッドに移動します。これはあなたの全体の問題ではないかもしれませんが、それはそれらの1つである可能性があります。

于 2010-07-25T19:14:52.683 に答える
0

これを試して:

new Assign<string>
{
    To = new OutArgument<string>(variable),
    Value = new InArgument<string>(
        env => Parameter.Get(env));
},
于 2011-03-26T03:04:37.083 に答える