gpt4 book ai didi

c# - 有序列化的优雅模式吗?

转载 作者:行者123 更新时间:2023-11-30 12:42:15 26 4
gpt4 key购买 nike

我经常发现自己实现了这种类:

public class Something
{
public string Serialize()
{
// serialization code goes here
}

public static Something Deserialize(string str)
{
// deserialization code goes here
}
}

我想通过让上面的类实现一个看起来像这样的接口(interface)来在所有这种类型的类中强制执行这一点:

public interface ISerializationItem<T>
{
string Serialize();
T Deserialize(string str);
}

唉,这是不可能的,因为接口(interface)不能覆盖静态方法,而方法需要是静态的,这样它才不依赖于类的任何实例。

更新:通常,我会反序列化如下所示;静态方法有效地用于构造类的实例,所以我不想手边已经有一个实例来执行此操作:

var str = "Whatever";
var something = Something.Deserialize(str);

是否有适当的方法来强制执行此约束?

最佳答案

让您的“数据”类保持简单/纯逻辑,然后在单独的类中编写序列化过程。这将使维护数据类和序列化程序更容易。如果每个类都需要定制,那么创建属性类并用这些属性装饰您的数据类。

这是一些伪例子...

public class Employee
{
public int Id { get; set;}

[ForceSpecialHandling]
public string Name { get; set; }
}

public class CustomSerializer
{
public T Serialize<T>(string data)
{
// Write the serialization code here.
}
}

// This can be whatever attribute name you want.
// You can then check if the property or class has this attribute using reflection.
public class ForceSpecialHandlingAttribute : Attribute
{
}

关于c# - 有序列化的优雅模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34404711/

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