有效地多次使用具有不同参数的方法

时间:2019-04-20 01:02:21

标签: c# methods

因此,我有一个用PHP编写的API来更新/添加/删除数据库中的条目,我使用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。 我可以在方法的参数中使用namevaluecollection,但是我在问是否有更好的方法来解决此问题,所以我的问题是:

有没有办法只有一个方法而不是多个方法来有效地完成相同的工作?

1 个答案:

答案 0 :(得分:0)

您可以将其分为两个级别。在较低级别上有一种方法,该方法知道如何发送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 }
    });
}