我使用的是名为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,我以后不能调用其中一种方法吗?
有什么想法吗?
由于
詹弗兰科
答案 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上提问,我想将你的评论标记为答案。我不