我有一个单独的类名为经理持有对象实例的列表,涉及:序列化和反序列化时参考用C#
static class Manager
{
static List<Foo> Foos = new List<Foo>();
}
然后我有使用采用参考一类叫做仪表对象实例的集合列表中的项目FOOS:
class Meter
{
public Foo MyFoo = null;
}
...
public void CreateMeter(int UserChoice)
{
Meter MyMeter = new Meter();
MyMeter.MyFoo = Manager.Foos[UserChoice];
}
当应用程序保存它系列化美孚在FOOS的情况下,与仪表的所有实例沿着一个项目文件。
我的问题是如何反序列化这种安排。目前,我做到以下几点:
- 反序列化的Foo的项目范围内的情况下重建Manager.Foos
- 反序列化的仪表实例,其中包括富的实例为MyFoo财产
- 搜索Manager.Foos和找到MyMeter.MyFoo的匹配参考,然后从Manager.Foos中分配参考。
这在我看来,笨重,不太容易扩展。我宁愿Meter工厂在反序列化过程中不需要搜索Manager.Foos,因为将来Meter可能会将其作为来自其他地方的Foo实例,而不仅仅是Manager。
有一个简单而灵活的替代解决这个问题,反序列化到哪里对象的引用可以容易恢复?
为什么MyMeter.MyFoo属性引用的'Foo'实例不能与MyMeter实例一起序列化/反序列化? –
是。但是Foo的相同实例可能会被多个计量表使用,我必须知道这是反序列化后的同一个实例。 – Andy
我应该指出,我正在使用自己的序列化/反序列化方法与XElement等 – Andy