【发布时间】:2012-11-26 09:51:08
【问题描述】:
考虑这个类:
[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)可能是因为这没有意义。
在这种情况下,我如何将对象反序列化到与它完全相同的状态?我想,这个问题归结为:我将如何调用非默认构造函数,将之前传递的 same 参数传递给它?有没有办法做到这一点?我们可以制定一些可以由编译器强制执行的规则(某种元编程)吗?构造函数属性在这里可以提供帮助吗?
【问题讨论】:
-
您使用的是什么类型的序列化? XML,...?
-
@RuiJarimba:我正在使用我自己编写的自定义序列化。将对象序列化为
XElement类型的 XML 对象。
标签: c# serialization reflection attributes initialization