【发布时间】:2016-06-24 20:48:12
【问题描述】:
现在我有几个类我希望序列化并保存到磁盘(格式并不重要)。但是,我真正需要存储的只是每个选项中的几个选择字段。这些字段因班级而异,但都是公开的。
public class A {
public string stringField;
public int intField;
...
}
public class B {
public float floatField;
public Object objectField;
...
}
我的方法是创建一个简单的容器类,它可以存储和序列化这些字段,并加载它们以返回该类的实例,并为每个类存储公共字段。
我可以通过为我想要存储的类中的匹配字段创建一个类来做到这一点。
public class AStorage{
public string stringFieldStorage;
public int intFieldStorage;
...
public void StoreA(A a){
stringFieldStorage = a.stringField;
intFieldStorage = a.intField;
}
public A GetA(){
A a = new A();
a.stringField = stringFieldStorage;
a.intField = intFieldStorage;
return a;
}
}
这可行,但这意味着我需要很多类,并且我需要根据他们希望从他们存储的类中接收到的内容来为他们提供字段。
我研究过使用反射来获取字段和名称,这很容易。然后,我可以将它们放在由字段名称键入的Dictonary<string, Object> 中,然后引用它。然而,这让我觉得有点恶心,让我想知道我是否完全做错了事。存储和序列化类的一些经过验证且真实的方法是什么?
【问题讨论】:
标签: c# serialization