gpt4 book ai didi

C# "Enum"序列化 - 反序列化为静态实例

转载 作者:太空狗 更新时间:2023-10-30 01:11:29 25 4
gpt4 key购买 nike

假设您有以下类(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com