使方法成为输入参数

时间:2014-05-27 11:05:47

标签: c#

我制作一个(简单的)应用程序,向控制台显示相当多的文本供用户进行交互。在出于美观原因完成方法的每个部分后,我清理控制台。因为我的方法基本上是其他方法的容器,所以这将是很长的(我还没有完成它),这会产生很多我想避免的代码重复。

我的(未完成的)方法:

public void RegisterTheUser()
        {
            SpecialCaseVariables s = new SpecialCaseVariables();
            Console.WriteLine(Variables.Default.registrationMsg + s.NewLine + s.NewLine);
            Console.Clear();
            string username = GetUsername();
            Console.Clear();
            string password = GetPassword();
            Console.Clear();
            string forename = GetForename();
            Console.Clear();
            string surname = GetSurname();
            Console.Clear();
            string displayAddress = GetDisplayAddress();
            Console.Clear();
            string phoneNumber = GetPhoneNumber();
            Console.Clear();
            Console.WriteLine(username + " " + password + " " + forename + " " + surname + " " + displayAddress + " " + phoneNumber);
            VerifyLogin(username, password);
            Console.ReadKey();

        }

所以我想知道的是我基本上可以做一些类似于以下内容的事情:

private string DoMethodAndClear(method methodToDo) //the type would be method if it could work?
{
Console.Clear;
var result = methodToDo();
return result;
}

所以在我的RegisterTheUser方法中,我可以使用一堆DoMethodAndClear方法而不是x方法然后清除,然后清除y方法。

1 个答案:

答案 0 :(得分:3)

您可以使用Func<string>代理:

private string DoMethodAndClear(Func<string> methodToDo) 
{
    var result = methodToDo();
    Console.Clear();
    return result;
}

然后叫它:

string username = DoMethodAndClear(GetUsername);
string password = DoMethodAndClear(GetPassword);
string forename = DoMethodAndClear(GetForename);
string surname = DoMethodAndClear(GetSurname);
string displayAddress = DoMethodAndClear(GetDisplayAddress);