如何从这个c#代码块中删除重复

335*_*307 0 c#

我写了这段代码,但在代码审查过程中,有人建议这是重复的代码,我需要从这段代码中删除代码重复.任何人都可以建议我如何更好地使这些代码,以避免重复.

private void ShowHideEmailContents(string email, string email2, string format, string tooltip, bool isReadOnly)
{
    if (isReadOnly)
    {
        hlEmail.NavigateUrl = string.Format(format, email);
        hlEmail2.NavigateUrl = string.Format(format, email2);
        hlEmail.Text = email;
        hlEmail2.Text = email2;
        hlEmail.ToolTip = tooltip;
        hlEmail2.ToolTip = tooltip;
        hlEmail.Visible = isReadOnly;
        hlEmail2.Visible = isReadOnly;
        txtEmail.Visible = !isReadOnly;
        txtEmail2.Visible = !isReadOnly;
    }
    else
    {
        txtEmail.Text = email;
        txtEmail2.Text = email2;
    }
}
Run Code Online (Sandbox Code Playgroud)

Hei*_*nzi 7

请注意,复制存在是因为您只对不同的对象执行两次相同的操作.

要解决这个问题,请创建一个只执行一次的新方法:

private static void ShowHideEmailContents(?? hl, ?? txt, string email, string format, string tooltip, bool isReadOnly)
{
    if (isReadOnly)
    {
        hl.NavigateUrl = string.Format(format, email);
        hl.Text = email;
        ...
    }
    else
    {
        txt.Text = email;
    }
}
Run Code Online (Sandbox Code Playgroud)

称之为两次:

private void ShowHideEmailContents(string email, string email2, string format, string tooltip, bool isReadOnly)
{
    ShowHideEmailContents(hlEmail, txtEmail, email, format, tooltip, isReadOnly);
    ShowHideEmailContents(hlEmail2, txtEmail2, email2, format, tooltip, isReadOnly);
}
Run Code Online (Sandbox Code Playgroud)