我在这里有这段代码:
public void SendID(int id)
{
try
{
binaryWriter.Write((int)Command.ID);
// part differening each time
binaryWriter.Write(id);
// end of part differing each time
}
catch (Exception ex)
{
if (Error != null)
Error(this, new ErrorEventArgs(ex));
}
}
我想概括一下这个函数,因为try / catch& Write(Command)事物在每个方法上总是相等的。现在我想知道最有效的方法是什么?
基本上我想到了一种方法,就是这样:
public void SendCommand(Command cmd, Action<BinaryWriter> action)
{
try
{
binaryWriter.Write((int)Command.ID);
}
catch (Exception ex)
{
if (Error != null)
Error(this, new ErrorEventArgs(ex));
}
}
然而,我无法指定我可能拥有的任何其他参数(例如字符串消息)。
另一种可能性是将参数更改为类型对象,但BinaryWriter
不知道要访问的内容,我每次都必须进行显式对话。有什么想法吗?
答案 0 :(得分:2)
我认为这很好。您可以按以下方式调用新方法:
SendCommand(cmd, binaryWriter => binaryWriter.DoSomething(msg));