PrintDocument类的可序列化问题

时间:2013-09-02 13:31:17

标签: c# serialization printdocument

我使用的是名为Laserfiche的软件。它有一个工作流服务器和一个SDK,允许您使用自己的自定义活动。 创建自定义活动时需要。它必须是序列化的。 所以我把属性[Serializable]放在所有类上。 问题是当我使用System.Drawing.Printing.PrintDocument类时。 我明白了:

  

02/09/2013 13:07:12 v9SignoffAuthentication类型   在Assembly'System.Drawing中'System.Drawing.Printing.PrintDocument',   Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'是   没有标记为可序列化。

我谷歌了一下,发现PrintDocument无法序列化。 我添加了属性

[NonSerialized]
PrintDocument pd;

自定义活动运行但不完全。

我得到了一个例外
 pd.Print();

这是在覆盖方法

protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)

错误是

  

System.NullReferenceException:未将对象引用设置为对象的实例。      在WFPrintCustomActivity.WFPrintCustomActivity.Execute(ActivityExecutionContext executionContext)|| 02/09/2013 13:15:38

如果我将对象标记为NonSerialized,我以后不能调用其中一种方法吗?

有什么想法吗?

由于

詹弗兰科

1 个答案:

答案 0 :(得分:0)

感谢Hans Passant, 这就是答案。 我正在

中初始化pd
  Public WFPrintCustomActivity()
            {
                InitializeComponent();

                settings = new Settings();
                //Logs("STARTED");


                pd = new PrintDocument();
                pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
            }

我评论了那两行

    pd = new PrintDocument();
    pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);

并在

中初始化pd

受保护的覆盖ActivityExecutionStatus执行(ActivityExecutionContext executionContext)

首先运行。 现在正在努力。

这是我第一次在stackoverflow上提问,我想将你的评论标记为答案。我不