C# 在Workflow 4.0中显式持久化状态,而不是所有状态

C# 在Workflow 4.0中显式持久化状态,而不是所有状态,c#,.net-4.0,persistence,workflow-foundation-4,C#,.net 4.0,Persistence,Workflow Foundation 4,我的SQL实例存储连接到正在运行的WorkflowApplication时遇到问题。当我退出我的应用程序时,我正在调用WF应用程序上的Unload(),以将其持久化。我在设计时没有考虑它,但它确实有意义,它持久化了一个参数,在实例化时传递给WorkflowApplication构造函数 当应用程序运行时,工作流中的所有内容都按预期工作。调用Unload()时,我得到一个未经处理的异常,该异常表示arg不可序列化,需要[DataContractAttribute] 传入工作流的是我编写的应用程序自

我的SQL实例存储连接到正在运行的
WorkflowApplication
时遇到问题。当我退出我的应用程序时,我正在调用WF应用程序上的
Unload()
,以将其持久化。我在设计时没有考虑它,但它确实有意义,它持久化了一个参数,在实例化时传递给WorkflowApplication构造函数

当应用程序运行时,工作流中的所有内容都按预期工作。调用
Unload()
时,我得到一个未经处理的异常,该异常表示arg不可序列化,需要
[DataContractAttribute]

传入工作流的是我编写的应用程序自定义记录器对象,以便WF能够以我喜欢的统一方式登录到磁盘。如何防止工作流应用程序持久化这一个参数和其他所有参数


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

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


这应该可以做到,它在WF3.5应用程序中对我有效。请参阅标题“选择性序列化”

Ok,我没有正确应用属性。在我的Logger类中,我用[Serializable]修饰它(尽管我不喜欢这个实现,因为它本来就不应该被序列化),然后用[NonSerialized]标记实例化的Logger对象。现在,持久化将忽略记录器对象。谢谢Joon!