c# - 小类或综合类

标签 c# coding-style

我正在开发分布式应用程序(服务器和客户端)。服务器发送了一些指令(例如 InitCommandStartCommandStopCommand )。每个命令都有自己的参数。现在,如果涉及序列化和网络,我问自己是否应该为每个命令类型(继承自 Command )创建一个子类,或者只是将所有可能的参数放在 Command 中类。

处理命令时是if (command is InitCommand)对比if (command.Type == CommandType.Init) .

我的第一个实现使用第一个选项。我手动序列化并将类型信息放在开头。现在,如果我从网络接收数据 ( byte[] ),我首先检查实际类型(仅反序列化前 k 个字节),然后使用一些反序列化方法(例如 Serializer.Deserialize<InitCommand> )。

第二个选项似乎更容易使用,因为我可以使用自动序列化并且不需要在反序列化之前检查类型。但这让我很烦,我必须将所有参数都放在一个类中。

您认为哪种方法更好,或者您知道其他方法吗?

最佳答案

听起来您应该拥有一个包含多个方法的类; 开始初始化停止。这将支持一个类中的所有内容。 SqlCommand 有 Text StoredProcedureTableDirect 的 CommandType,这听起来像是您要为不同类型的命令重建的内容。我会选择 #2 并查看 Microsoft 如何实现 SqlCommand使用 CommandType

关于c# - 小类或综合类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8086346/

相关文章:

java - Java 字符串连接运算符 "+"的样式建议是什么?

java - 为什么Android代码风格不遵循google java代码风格

java - 如何在 Java 中正确转换泛型集合?

c# - Web 部件中的 NullReferenceException

c# - CurrentThread.CurrentCulture 和单元测试

c# - 带有一些符号的名称的正则表达式

html - 定位绝对 div 的问题

c# - 如何在 Xamarin Forms 中使用相机拍摄多张照片?

c# - sslStream.Read 问题 : all bytes read are 0

C++异常处理困惑