【问题标题】:Explicitly persist states in Workflow 4.0 rather than everything在 Workflow 4.0 中显式持久化状态而不是一切
【发布时间】:2010-06-14 18:37:06
【问题描述】:

我的 SQL 实例存储附加到正在运行的 WorkflowApplication 时遇到问题。当我退出我的应用程序时,我会在 WF 应用程序上调用 Unload() 来保留它。我在设计时没有考虑过它,但它确实有道理,它保留了一个在实例化时传递给 WorkflowApplication 构造函数的 arg。

当应用程序运行时,工作流中的一切都按预期工作。当我调用 Unload() 时,我得到一个未处理的异常,指出 arg 不可序列化并且需要 [DataContractAttribute]

传递到工作流的是我编写的应用程序自定义记录器对象,以便 WF 可以以我喜欢的统一方式记录到磁盘。如何防止工作流应用保留这一参数并保留其他所有参数?

我确信可以通过扩展来完成某些事情,但我很难找到关于它们的信息或为我的场景找到持久性示例。

【问题讨论】:

    标签: c# .net-4.0 persistence workflow-foundation-4


    【解决方案1】:

    您可以使用 [NonSerialized] 属性将变量修饰为不被序列化。

    这应该可以解决问题,它在 WF3.5 应用程序中对我有用。参见http://msdn.microsoft.com/en-us/library/ms973893.aspx,标题为“选择性序列化”

    【讨论】:

    • 好的,我错误地应用了属性。在我的 Logger 类中,我用 [Serializable] 装饰它(尽管我不喜欢这种实现,因为它不应该首先被序列化),然后用 [NonSerialized] 标记实例化的 Logger 对象。现在持久化忽略记录器对象。谢谢俊!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多