目前我有一些接口(这里去掉了这些接口):
public interface IJobGroup
{
string Name { get; }
IEnumerable<IJobItem> Jobs { get; }
}
public interface IJobItem
{
string Name { get; }
void Start();
event EventHandler Finished;
}
此外,我还实现了这些接口。但现在我想把我的
JobGroup
. 到目前为止,我已经使用DataContractSerializer和XmlSerializer进行了一些尝试,并将所有需要的属性添加到了上述接口的实现中。
到目前为止,一切都很好。但我想用我需要的解决方案解决两件事:
-
强制实现我的接口的所有人将其类序列化为XML。
-
如果我序列化
IJobGroup
,我想查看结果XML文件中的所有内容
明文
不是base64编码数据。
在这种情况下,有人可以手动更改XML文件(如果他知道自己在做什么)。
有些想法不太管用:
-
ISerializable
这并不能真正强制序列化对象。它更适用于实现自定义序列化程序,而不是使用属性的默认用法。
-
封装序列化的接口(例如
byte[] State
)
我可以添加另一个字节数组属性
状态
到接口,将获取并设置序列化数据。也许这将有一个优势,即每个项目都可以实现其自己的过程,即如何序列化某些内容。但缺点是,大型XML文件包含字节[]作为base64编码的数据块,这是人类无法轻松读取的。
所以,也许有人有主意,或者能给我指明正确的方向。