-1

我在这里有这段代码:

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));
    }
}

但是,我无法指定我可能拥有的任何其他参数(例如字符串消息)。

另一种可能性是将参数更改为类型 object 但随后BinaryWriter不知道要访问什么,我每次都必须进行明确的对话。有任何想法吗?

4

1 回答 1

2

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

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

于 2012-12-22T21:03:48.827 回答