如何将这两种相似的方法合二为一?

P.B*_*key 2 c#

以下方法只是彼此的反转.我怀疑我可以将逻辑组合成一种方法.我宁愿避免反思.是否可以将它们结合起来并保持可读性?

    private void btnAdd_Click(object sender, EventArgs e)
    {
        LabEntity selectedItem = bindingSource1.Current as LabEntity;
        selectedLabsData.Add(selectedItem);
        availableLabsData.Remove(selectedItem);
    }

    private void btnRemove_Click(object sender, EventArgs e)
    {
        LabEntity selectedItem = bindingSource2.Current as LabEntity;//new binding source
        availableLabsData.Add(selectedItem);//called Add instead of remove
        selectedLabsData.Remove(selectedItem);//called Remove instead of Add
    }
Run Code Online (Sandbox Code Playgroud)

lad*_*dge 13

您可以将逻辑分解为辅助方法:

private void ListFixup(object entity, List<Item> addList, List<Item> removeList)
{
    LabEntity selectedItem = entity as LabEntity;
    // don't forget your error checking here

    addList.Add(selectedItem);
    removeList.Remove(selectedItem);
}

private void btnAdd_Click(object sender, EventArgs e)
{
    ListFixup(bindingSource1.Current, selectedLabsData, availableLabsData);
}

private void btnRemove_Click(object sender, EventArgs e)
{
    ListFixup(bindingSource2.Current, availableLabsData, selectedLabsData);
}
Run Code Online (Sandbox Code Playgroud)

我不确定这有助于提高可读性,但它确实减少了代码重复.