2014-10-07 57 views
0

我试图将复杂对象ScriptControl作为工作流的In参数传递。我得到的错误是:在参数WF4中传递控制

`The following errors were encountered while processing the workflow tree: 
'Literal<ScriptControl>': Literal only supports value types and the immutable type  System.String. The type ScriptDisplay.ScriptControlcannot be used as a literal.` 

我更新的工作流程,我明白这个问题,但我该如何解决它?

+0

你可以提供一个代码片段? – ajawad987 2014-10-08 00:34:43

回答

1

没有看到你的代码我不能确定,但​​这通常是由使用WorkflowInvoker造成的。 例如

WorkflowInvoker.Invoke(workflow,ScriptControl) 

这种方式是将复杂的对象放到字典中。

ScriptControl scriptControl= new ScriptControl{ initialise your object here }; 

Dictionary<string, object> inputDictionary = new Dictionary<string, object> { { "ScriptControl", scriptControl } }; 

var output = WorkflowInvoker.Invoke(workflow, inputDictionary); 

然后,您使用的字典照常访问ScriptControl对象。

例如

var x = dictionary["ScriptControl"].some property of your ScriptControl object 

Ron Jacobs talks more about this here

+0

谢谢理查德。我正在研究这个。我可以提供一些代码,但我发现在工作流程中很难提供片段。 – DidIReallyWriteThat 2014-10-08 12:53:06

+0

您可以发布一段关于如何设置WorkflowApplication或WorkflowInvoker对象并将ScriptControl传递给它的片段。 在XAML方面,发布根级活动参数的图像。 – ajawad987 2014-10-08 19:10:57