gpt4 book ai didi

c# - 重构使用相同代码但内部方法不同的方法

转载 作者:太空狗 更新时间:2023-10-30 00:10:08 26 4
gpt4 key购买 nike

除了一行之外,我有一些相同的方法(我在对象客户端上调用了不同的方法)。我会有更多这样的方法。

除了使用 Reflection 之外,还有其他解决方案吗?

 private void initClerks(Client client)
{
string[] pks = client.ClerksPKS.Trim(','). Split(',');

foreach (string pk in pks)
{
string data = JObject.Parse(DBUtils.GetData(Constants.DBProcedures.GetProcedures.GetWorkerDetailsByPkid, pk))[Constants.ResponseJson.Data].ToString();

client.addClerk(JsonConvert.DeserializeObject<Clerk[]>(data)[0]);

}

}


private void initManagers(Client client)
{
string[] pks = client.ManagerPK.Trim(',').Split(',');



foreach (string pk in pks)
{
string data = JObject.Parse(DBUtils.GetData(Constants.DBProcedures.GetProcedures.GetWorkerDetailsByPkid, pk))[Constants.ResponseJson.Data].ToString();
client.addManager(JsonConvert.DeserializeObject<Manager[]>(data)[0]);

}

}

最佳答案

您可以通过将操作传递到方法中来完成此操作。有点像

private void actOnData(Client client, string[] pks, Action<Client, string> addThing)
{
foreach (string pk in pks)
{
string data = JObject.Parse(DBUtils.GetData(Constants.DBProcedures.GetProcedures.GetWorkerDetailsByPkid, pk))[Constants.ResponseJson.Data].ToString();
addThing(client, data);
}
}

private void initClerks(Client client)
{
string[] pks = client.ClerksPKS.Trim(',').Split(',');
actOnData(client,pks,(c,d) => { c.addClerk(JsonConvert.DeserializeObject<Clerk[]>(d)[0]); });
}

private void initManagers(Client client)
{
string[] pks = client.ManagerPK.Trim(',').Split(',');
actOnData(client, pks, (c, d) => { c.addManager(JsonConvert.DeserializeObject<Manager[]>(d)[0]); });
}

关于c# - 重构使用相同代码但内部方法不同的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34528201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com