Сериализация / десериализация и конструкторы не по умолчанию

Рассмотрим этот класс:

[Persistable]
public sealed class FileMoveTask : TaskBase
{
     [PersistMember]
     public string SourceFilePath { get; private set;}

     [PersistMember]
     public string DestFilePath { get; private set;}

     public FileMoveTask(string srcpath, string dstpath)
     {
         this.SourceFilePath = srcpath;
         this.DestFilePath = dstpath;

         //possibly other IMPORTANT initializations
     }

     //code
}

Я могу сохранить объекты этого класса, сериализовав все члены с атрибутомPersistMember, Но я'Я столкнулся с некоторыми проблемами (проблемами проектирования) в процессе десериализации. В частности, проблема с "возможно другие ВАЖНЫЕ инициализации " который может быть в конструкторе, и программист может решить,не сделать несколько участников постоянными (т.е. не добавлятьPersistMember им) возможно, потому что это нене имеет смысла.

В такой ситуации, как бы я десериализовал объект до точно такого же состояния, как было? Я полагаю, этот вопрос сводится к следующему: как бы я вызвал конструктор не по умолчанию, передаваятак же аргументы к нему, который был передан раньше? Есть ли способ сделать это? Можем ли мы создать некоторые правила, которые могут быть применены компилятором (своего рода метапрограммирование)? Атрибуты конструктора могут помочь здесь?