2013-09-02 6 views
0

Я использую программное обеспечение Laserfiche. У этого есть сервер рабочего процесса и SDK, который позволяет вам использовать свои собственные действия. При создании пользовательской активности существует требование. Он должен быть сериализован. Итак, я поместил свойство [Serializable] на все классы. Проблема заключается в том, что я использую класс System.Drawing.Printing.PrintDocument. я получаю:Serializable issue on PrintDocument class

02/09/2013 13:07:12 v9SignoffAuthentication Тип 'System.Drawing.Printing.PrintDocument' в System.Drawing Ассамблеи», Version = 4.0.0.0, культура = нейтральной, PublicKeyToken = b03f5f7f11d50a3a '- , не помеченный как сериализуемый.

Я немного искал Google и обнаружил, что 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, я не могу назвать один из этих методов позже?

Любые идеи?

Благодаря

Gianfranco

+1

Это должно быть немного очевидно, помечая поле [NonSerialized], оно будет иметь значение по умолчанию для десериализованного объекта. Который является нулевым. Вам нужно будет придать ему значение. –

ответ

0

Спасибо Hans Passant, Это был ответ. я инициализация PD внутри

Public WFPrintCustomActivity() 
      { 
       InitializeComponent(); 

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


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

Я прокомментировал эти 2 строки

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

И инициализировать PD внутри

защищаемого переопределения ActivityExecutionStatus Execute (ActivityExecutionContext ExecutionContext)

который проходит первым. Теперь работает.

Это первый случай, когда я спрашиваю что-то о stackoverflow, и я хотел отметить ваш комментарий в качестве ответа. I don

 Смежные вопросы

  • Нет связанных вопросов^_^