Эффективно использовать метод несколько раз с различными параметрами - PullRequest
0 голосов
/ 20 апреля 2019

Итак, у меня есть API, написанный на PHP для обновления / добавления / удаления записей в моей базе данных, я использую C # для связи с PHP (публикуемые данные). Но я не хочу иметь несколько методов с практически одинаковым кодом, который делает что-то другое.

Вот так выглядят мои методы для обновления члена моей базы данных:

      public static bool UpdateMember(string name, string lastname, string ismanager, string birthday, string positionID, string memberID)
    {
        using (WebClient client = new WebClient())
        {
            NameValueCollection PostLoginData = new NameValueCollection()
            {
                {"update_Member","1" },
                {"Name", name },
                {"LastName", lastname },
                {"isManager", ismanager },
                {"Birthday", birthday },
                {"PositionID", positionID},
                {"MemberID", memberID }
            };
            string result = Encoding.UTF8.GetString(client.UploadValues($"{Domain}API.php", PostLoginData));
            dynamic json = JsonConvert.DeserializeObject(result);
            if (json.result == "success")
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

Вот так выглядит мой метод для добавления позиции в мою базу данных:

     public static bool UploadPosition(string PosName)
    {

        using (WebClient client = new WebClient())
        {
            NameValueCollection postPlatformData = new NameValueCollection()
            {
                {"add_Position","1" },
                {"PosName",PosName }

            };
            string result = Encoding.UTF8.GetString(client.UploadValues($"{Domain}/API.php", postPlatformData));
            dynamic json = JsonConvert.DeserializeObject(result);
            if (json.result == "success")
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

Как вы можете видеть, единственное, что отличается, - это моя NameValueCollection. Я мог бы иметь коллекцию namevalue в параметре метода, но я спрашиваю, есть ли лучший способ решить эту проблему, поэтому мой вопрос:

есть ли способ иметь только один метод вместо нескольких, который в основном делает то же самое, эффективно?

1 Ответ

0 голосов
/ 20 апреля 2019

Вы можете разделить это на два уровня.На нижнем уровне есть метод, который знает, как отправить NameValueCollection.

public static bool Update(NameValueCollection nameValueCollection)
{
    using (WebClient client = new WebClient())
    {
        string result = Encoding.UTF8.GetString(client.UploadValues($"{Domain}/API.php", nameValueCollection));
        dynamic json = JsonConvert.DeserializeObject(result);
        if (json.result == "success")
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

На верхнем уровне есть методы, которые знают, как построить определенный NameValueCollection и вызвать метод нижнего уровня.на самом деле отправить их.

public static bool UpdateMember(string name, string lastname, string ismanager, string birthday, string positionID, string memberID)
{
    return Update(new NameValueCollection()
    {
        {"update_Member","1" },
        {"Name", name },
        {"LastName", lastname },
        {"isManager", ismanager },
        {"Birthday", birthday },
        {"PositionID", positionID},
        {"MemberID", memberID }
    });
}

public static bool UploadPosition(string PosName)
{
    return Update(new NameValueCollection()
    {
        {"add_Position","1" },
        {"PosName",PosName }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...