joh*_*y g 5 .net c# workflow-foundation-4
我是Windows Workflow [WF]的新手,并且有兴趣为业务目的评估WF.我决定通过介绍
[TestMethod]
public void TestMethod ()
{
TextWriter writer = new StringWriter ();
Sequence sequence = new Sequence
{
Activities =
{
// so, assigning a reference type [eg StringWriter]
// as target is prohibited in WF4RC. what or how do
// i assign a target? introduction cited above may
// not be current [ie may be Beta2, not RC] so ... ?
new WriteLine { Text = "Hello", TextWriter = writer },
new WriteLine { Text = "World", TextWriter = writer }
}
};
// !!! BLOWS UP !!!
WorkflowInvoker.Invoke (sequence);
}
Run Code Online (Sandbox Code Playgroud)
并遇到了
测试方法SomeTests.SomeTests.TestMethod抛出异常:System.Activities.InvalidWorkflowException:处理工作流树时遇到以下错误:'Literal':Literal仅支持值类型和不可变类型System.String.System.IO.TextWriter类型不能用作文字.
四处寻找,我发现这篇文章描述了我上面看到的错误.
作为WF的新手,我真的不明白改变或规定的方法来解决它.所以,我的问题是,
使用WF4RC,一个[正确]如何使用WriteLine活动?
Ack,k,所以请注意:尝试Google搜索的所有排列.找到后找到了这个
WriteLine活动WF RC
解决的办法是把它包在一个LambdaValue<T>,COMME CA
[TestMethod]
public void TestMethod ()
{
StringWriter writer = new StringWriter ();
Sequence sequence = new Sequence
{
Activities =
{
new WriteLine
{
Text = "Hello",
TextWriter = new LambdaValue<TextWriter> (n => writer)
},
new WriteLine
{
Text = "World",
TextWriter = new LambdaValue<TextWriter> (n => writer)
}
}
};
WorkflowInvoker.Invoke (sequence);
Assert.
AreEqual (
"Hello\r\nWorld\r\n",
writer.GetStringBuilder ().ToString ());
}
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎很奇怪,但我确实与"专家"相反:P
如果有人拥有它们,我仍然会欢迎替代品.
| 归档时间: |
|
| 查看次数: |
1407 次 |
| 最近记录: |