作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
假设您有以下类(class):
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”的选择直接与他们的数据相关联。
如何解决这个问题?
最佳答案
如果您需要更多的枚举数据,请考虑使用属性。示例如下。
class Name : Attribute
{
public string Text;
public Name(string text)
{
this.Text = text;
}
}
class Description : Attribute
{
public string Text;
public Description(string text)
{
this.Text = text;
}
}
public enum DaysOfWeek
{
[Name("FirstDayOfWeek")]
[Description("This is the first day of 7 days")]
Sunday = 1,
[Name("SecondDayOfWeek")]
[Description("This is the second day of 7 days")]
Monday= 2,
[Name("FirstDayOfWeek")]
[Description("This is the Third day of 7 days")]
Tuesday= 3,
}
也许这将使您能够通过枚举提供更多信息。您可以通过反射访问属性。如果您需要一个示例来检索属性,我也可以提供,但我尽量保持简短。
关于C# "Enum"序列化 - 反序列化为静态实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2427704/
出于好奇,我尝试了一些原型(prototype)制作,但似乎只允许在第一个位置使用子例程的原型(prototype) &。 当我写作时 sub test (&$$) { do_somethin
我需要开发一个类似于 Android Play 商店应用程序或类似 this app 的应用程序.我阅读了很多教程,发现几乎每个教程都有与 this one 类似的例子。 . 我已经开始使用我的应用程
考虑一个表示“事件之间的时间”的列: (5, 40, 3, 6, 0, 9, 0, 4, 5, 18, 2, 4, 3, 2) 我想将这些分组到 30 个桶中,但桶会重置。期望的结果: (0, 1,
我是一名优秀的程序员,十分优秀!