5

型なしで InArgument を宣言した Activity があります (設計時に Expression の型を知りたいため)。

アクティビティを実行すると、var contentTelegram 行に次のエラーが表示されます。

"The argument of type '<type>' cannot be used.  Make sure that it is declared on an activity."

これが私のコードです:

public InArgument Content { get; set; }


protected override PlcMessage Execute(CodeActivityContext context)
        {

            try
            {
                var contentTelegram = Content.Get(context); 

               return new PlcMessage();
            }
            catch (Exception ex)
            {

                throw;
            }


        }
4

1 に答える 1

4

これが私がしたことです:

ワークフロー ランタイムは、引数で使用される型について知る必要があるため、cacheMetadata がそれを機能させるための鍵となります。

public sealed class MyActivity: CodeActivity
{
    private RuntimeArgument outMyRuntimeArgument;

    // Define an activity input argument of type string
    public OutArgument MyUntypedArgument { get; set; }


    protected override void CacheMetadata(CodeActivityMetadata metadata)
    {
        outMyArgument= new RuntimeArgument("MyUntypedArgument", MyUntypedArgument.ArgumentType, ArgumentDirection.Out);
        metadata.Bind(MyUntypedArgument, outArgument);
        metadata.AddArgument(outMyArgument);
    }     


    protected override void Execute(CodeActivityContext context)
    {
        context.SetValue(outMyRuntimeArgument, Activator.CreateInstance(Type));
    }
}
于 2013-03-28T09:41:25.430 に答える