5

我有一个活动,我在其中声明了一个没有类型的 InArgument(因为我想在设计时知道表达式的类型)。

当我执行活动时,我在 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 是使其工作的关键,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 回答