因此,我有一个用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,但是我在问是否有更好的方法来解决此问题,所以我的问题是:
有没有办法只有一个方法而不是多个方法来有效地完成相同的工作?
答案 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 }
});
}