考虑这个类:
[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
到它们),因为这没有意义。
在这种情况下,我如何将对象反序列化到与它完全相同的状态?我想,这个问题归结为:我将如何调用非默认构造函数,将相同的参数传递给它,这是之前传递的?有没有办法做到这一点?我们可以制定一些可以由编译器强制执行的规则(某种元编程)吗?构造函数属性可以在这里提供帮助吗?