Сериализация / десериализация и конструкторы не по умолчанию
Рассмотрим этот класс:
[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
им) возможно, потому что это нене имеет смысла.
В такой ситуации, как бы я десериализовал объект до точно такого же состояния, как было? Я полагаю, этот вопрос сводится к следующему: как бы я вызвал конструктор не по умолчанию, передаваятак же аргументы к нему, который был передан раньше? Есть ли способ сделать это? Можем ли мы создать некоторые правила, которые могут быть применены компилятором (своего рода метапрограммирование)? Атрибуты конструктора могут помочь здесь?