【发布时间】:2010-03-11 18:43:05
【问题描述】:
假设你有以下类:
class Test : ISerializable {
public static Test Instance1 = new Test {
Value1 = "Hello"
,Value2 = 86
};
public static Test Instance2 = new Test {
Value1 = "World"
,Value2 = 26
};
public String Value1 { get; private set; }
public int Value2 { get; private set; }
public void GetObjectData(SerializationInfo info, StreamingContext context) {
//Serialize an indicator of which instance we are - Currently
//I am using the FieldInfo for the static reference.
}
}
我想知道是否可以/优雅地反序列化为类的静态实例?
由于反序列化例程(我正在使用 BinaryFormatter,尽管我想其他人会类似)寻找具有与 GetObjectData() 相同的参数列表的构造函数,因此似乎无法直接完成。 .我认为这意味着最优雅的解决方案是实际使用enum,然后提供某种翻译机制将枚举值转换为实例引用。不过,我个人喜欢“Enum”的选择与他们的数据直接相关。
如何解决这个问题?
【问题讨论】:
-
我正在努力解决这个问题。不幸的是,没有一个答案是相关的。每个人似乎都误解了这个问题。有没有找到合理的解决办法?
-
顺便说一句,我正在使用“符号作为可扩展枚举”(codeproject.com/KB/cs/symbol.aspx)。我试图使它们可序列化但没有取得多大成功。我在那里发布了一个问题,看看是否有人会提供帮助。
-
jpbochi - 你几乎必须做 galford13x 的属性“hack”,或者有其他方法或映射对象,并且只在存储数据时处理枚举值。我从来没有找到更好的方法。
-
我对您的要求表示同情。我非常想念 Java 枚举中的强大功能:(
标签: c# serialization static enums