Мне нужна функция входа (логин - это всего лишь пример, любой другой часто используемый метод может быть точным), который берет адрес электронной почты и пароль как параметр и запрашивает DB, если есть такой пользователь. Если да, он должен вернуть customer_id (int), если нет, он вернет сообщение, почему логин не может произойти (например: нет такого адреса электронной почты).Повторное использование общих функций с наилучшим правильным подходом C#
Я также не хочу переписывать функцию входа в систему каждый раз. Я хочу написать его один раз в общем проекте, который я могу использовать в каждом проекте и использовать его повторно. Но я пытаюсь найти наилучшую практику для этого. До сих пор я думал о чем-то вроде ниже, но проблема для меня в том, что я не могу вернуть идентификатор клиента, который я получу в кодах в моих проектах (любой другой проект) и открою с ним переменную сеанса. Я могу возвращать строки ниже структуры. Я также подумал о возвращении Dic, но это также неправильно. Я думаю, потому что, если bool (key) оказывается истинным, CustomerID не является строкой (значением). Можете ли вы мне помочь, изучив правильный способ использования общих функций, не задумываясь о возвращении сообщений и переменных дважды? Большое спасибо
public class UserFunctions
{
private enum Info
{
//thought of returning codes??
LoginSuccess = 401,
NoMatchPasswordEmail = 402,
InvalidEmail = 403,
};
public string TryLogin(string email, string password)
{
bool isValidEmail = Validation.ValidEmail(email);
if (isValidEmail == false)
{
return Result(Info.InvalidEmail);
// returning a message here
}
Customers customer = new Customers();
customer.email = email;
customer.password = password;
DataTable dtCustomer = customer.SelectExisting();
if (dtCustomer.Rows.Count > 0)
{
int customerID = int.Parse(dtCustomer.Rows[0]["CustomerID"].ToString());
return Result(Info.LoginSuccess);
// Here I cant return the customerID. I dont wanna open a session here because this function has no such a job. Its other projects button events job I guess
}
else
{
return Result(Info.NoMatchPasswordEmail);
}
}
private string Result(Info input)
{
switch (input)
{
case Info.NoMatchPasswordEmail:
return "Email ve şifre bilgisi uyuşmamaktadır";
case Info.InvalidEmail:
return "Geçerli bir email adresi girmelisiniz";
case Info.LoginSuccess:
return "Başarılı Login";
}
return "";
}
}
Совсем забыл об этом варианте. Думаю, я тоже слишком много думал о коробке. – Skintkingle
Тогда для каждой функциональной группы вам придется написать собственный класс. Например, вам нужен общий класс операций с корзинами и функция добавления в корзину. На этот раз вам придется написать собственный класс с идентификатором orderID. –
То, что мне кажется совсем другой функцией, и поэтому для этого потребуется больше кода. Выше приведен пример общего «входа», он должен быть отделен от «ордеров». Исследование SOP, Разделение проблем для получения дополнительной информации. – Khan