Я использую "BrowserSession" и добавил 2 переменные для отслеживания имени пользователя и пароля, для входа на сайт.Можно ли использовать переменную как параметр по умолчанию в C#?
private string _username;
private string _password;
public StoredAccountInfo RefreshAccountData(string username = _username, string password = _password)
{
if ((string.IsNullOrEmpty(username)) || (string.IsNullOrEmpty(password))
{
//throw Exception("Password Or Username Not Set");
}
BrowserLogin(username, password);//In case user is not logged in
StoredAccountInfo retdata = new StoredAccountInfo();
//populate retdata
return retdata;
Я также добавил эту функцию, которая устанавливает _username и _password переменные
public void BrowserLogin(string username, string password)
{
if (Cookies == null)
{
//Do Site Login Here If not Logged In
Get(constants.BaseUrl);
FormElements["UserName"] = username;
FormElements["PassWord"] = password;
Post(constants.loginUrl);
_username = username;
_password = password;
}
}
Однако
public StoredAccountInfo RefreshAccountData(string username = _username, string password = _password)
дает мне ошибку синтаксиса "default parameter value for 'username' must be a compile-time constant
"
Кто-нибудь знает обходной путь или решение? Я не хочу передавать имя пользователя и пароль. Каждый раз я вызываю метод RefreshAccountData, однако, если он вызывается до первого входа в браузер, я хотел бы иметь возможность устанавливать из него переменные имени пользователя и пароля.
Я мог бы просто полностью потерять действительно простой способ сделать это. Но я не могу ни о чем думать.
Как насчет вас просто перегружать метод? Не пытайтесь сделать необязательные параметры, чтобы они не делали. – jmcilhinney
Я не уверен, как работают перегрузки. Я нахожу их довольно запутанными довольно странно, хотя я буду изучать это. Однако есть много ответов, которые будут делать то, что мне нужно. –
@JasonBrown Я никогда не видел кого-то, кто изучал дополнительные параметры, но не перегружал ... Сначала вы должны научиться перегрузке. – Sweeper