分类或综合课程

时间:2011-11-10 21:10:51

标签: c# coding-style

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

处理命令时,if (command is InitCommand) vs if (command.Type == CommandType.Init)

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

第二个选项似乎更容易使用,因为我可以使用自动序列化,并且在反序列化之前不需要检查类型。但令我很恼火的是,我必须将所有论点都归入一个类。

您认为哪种方法更好,或者您了解其他方法?

1 个答案:

答案 0 :(得分:1)

听起来你应该有一个有多种方法的课程; StartInitStop。这将支持一个类中的所有内容。 SqlCommand的CommandType为Text StoredProcedureTableDirect,听起来就像您尝试为不同类型的命令重建一样。我会选择#2并查看Microsoft如何使用CommandType实施SqlCommand