【问题标题】:Workflow Foundation - Literal only supports value types and the immutable type System.StringWorkflow Foundation - Literal 仅支持值类型和不可变类型 System.String
【发布时间】:2013-05-14 22:47:51
【问题描述】:

我对名为 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':Literal 仅支持值类型和不可变类型 System.String。 MyComplexObject 类型不能用作文字。

【问题讨论】:

标签: c#-4.0 workflow-foundation-4


【解决方案1】:

解决眼前的问题:

MyComplexObject = _complexObject

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

延伸阅读:http://msdn.microsoft.com/en-us/library/ee358749.aspx.

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    相关资源
    最近更新 更多