怎么可以缩短呢?

时间:2012-12-22 20:48:48

标签: c# delegates action binarywriter

我在这里有这段代码:

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不知道要访问的内容,我每次都必须进行显式对话。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我认为这很好。您可以按以下方式调用新方法:

SendCommand(cmd, binaryWriter => binaryWriter.DoSomething(msg));