Serialização / Desserialização e Construtores Não-Padrão
Considere esta classe:
[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
}
Eu posso persistir os objetos desta classe, serializando todos os membros com atributoPersistMember
. Mas estou enfrentando alguns problemas (problemas de design) durante o processo de desserialização. Em particular, o problema é com o"possivelmente outras inicializações importantes" que pode estar lá no construtor, e o programador pode decidirnão para tornar alguns membros persistentes (ou seja, não adicionandoPersistMember
para eles) possivelmente porque isso não faz sentido.
Em tal situação, como eu desserializaria o objeto exatamente no mesmo estado em que estava? Eu suponho que, esta questão se resume a isso: como eu chamaria o construtor não-padrão, passando omesmo argumentos para isso, o que foi passado antes? Existe alguma maneira de fazer isso? Podemos fazer algumas regras que podem ser aplicadas pelo compilador (tipo de metaprogramação)? Atributos de construtor podem ajudar aqui?