c#-4.0 - Workflow Foundation - Literal 仅支持值类型和不可变类型 System.String

标签 c#-4.0 workflow-foundation-4

我对名为 MyCodeActivity 的 WF 代码事件进行了以下单元测试:

[ExpectedException(typeof(ArgumentException))]
[TestMethod]
public void ShouldRequireParam()
{
    //arrange
    var invoker = new WorkflowInvoker(new MyCodeActivity()
    {
        MyInt = 2,
        MyComplexObject = _complexObject
    });

    //act
    invoker.Invoke();

    //assert
    Assert.Fail("Expected ArgumentException");
}

当我运行测试时,出现以下异常

'Literal< MyComplexObject>': Literal only supports value types and the immutable type System.String. The type MyComplexObject cannot be used as a literal.

最佳答案

要解决眼前的问题:

MyComplexObject = _complexObject

MyComplexObject = new InArgument<MyComplexObject>((ctx) => _complexObject)

进一步阅读:http://msdn.microsoft.com/en-us/library/ee358749.aspx .

注意:您还应该使用 Microsoft.Activities.UnitTesting NuGet 上提供了包。它使 IOC 变得更容易(因为 WF 使用服务定位器模式而不是依赖注入(inject))

关于c#-4.0 - Workflow Foundation - Literal 仅支持值类型和不可变类型 System.String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16554084/

相关文章:

c#-4.0 - 是否可以使用自定义类型属性的内容创建 Orchard 自动路线?

c# - "type not defined"WF4 RC 异常

azure - Azure 中的 Windows 工作流

C#-如何使用空列表<string>作为可选参数

c#-4.0 - 带有剑道网格的复选框列

javascript - 请谁能帮我将此正则表达式模式从 javascript 转换为 c#

c# - 如何调试动态工作流(使用自定义事件)

c# - 如何在一页中使用两个表单?

c# - Windows Workflow Foundation - 获取已执行事件的列表?

workflow-foundation-4 - 访问数据库、重用和状态的自定义 Windows 工作流事件