这可能有点主观,但我想听听您对我目前情况的看法。我有一个将用于序列化/反序列化对象的类。
public class MyClass
{
public static string ToXmlString( MyClass c ) { /*...*/ }
public static MyClass FromXmlString( string xml ) { /*...*/ }
}
我只喜欢这种方法,因为它将两个功能保持在同一级别。但是,我的目标是避免使用静态方法(在可行的情况下)。我也觉得我可能违反了 SRP,但这个对象的主要目标是它可以从 xml 字符串序列化/反序列化。
对于在这种情况下使用静态方法有什么想法吗?我是否应该让 ToXmlString
成为非静态的,而让 FromXmlString
保持静态?我应该创建一个只处理 MyClass 序列化的新类吗?
编辑:
我在这里讨论的类是一个简单的传输对象。它用于从第三方工具保存/恢复值。
谢谢!
最佳答案
FWIW 我认为序列化是一个问题,应该与您类(class)的其他部分分开,尤其是如果您的类(class)是业务类型。
开发组件时的一般规则是确保它只解决少数问题,并将业务问题与技术问题分开。
如果以后您需要管理来自数据库或二进制格式的序列化怎么办?
您可能会以越来越多的技术方法(SaveToDB、LoadFromDB、ToBinaryStream、FromBinaryStream...)结束,这些方法会使您的类变得困惑并使其越来越难以维护,隐藏其主要目的(例如业务)。
关于c# - 在处理静态方法时将代码保持在同一级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3495330/