抱歉,我找不到正确的标题。我有不止一种返回相同结果的方法。
返回类型
public class JsonTreeView
{
public int id { get; set; }
public string text { get; set; }
public string state { get; set; }
public string @checked { get; set; }
public string attributes { get; set; }
public List<JsonTreeView> children { get; set; }
}
第一种方法
List<JsonTreeView> FromReportTree(List<ReportTree> list)
{
}
第二种方法
List<JsonTreeView> FromLocationTree(List<LocationTree> list)
{
}
和其他...树模型的属性不同。例如:
LocationTree (id, name, parent, text)
ReportTree (sno, name, parent, desc)
是否可以为所有这些树模型编写一个方法?有什么建议或起点吗?
谢谢...
最佳答案
我建议你创建一个私有(private)方法来完成繁重的工作,并为不同的类型保留重载方法。从其他方法调用私有(private)方法,使用从该方法的特定对象创建 JsonTreeView
对象的函数:
private List<JsonTreeView> FromReportTree<T>(List<T> list, Func<T, JsonTreeView> convert) {
// loop through the list and call convert to create items
List<JsonTreeView> result = new List<JsonTreeView>();
foreach (T item in list) {
result.Add(convert(item));
}
return result;
}
List<JsonTreeView> FromReportTree(List<ReportTree> list) {
return FromReportTree(list, t => new JsonTreeView(t.id, t.text, ... ));
}
List<JsonTreeView> FromReportTree(List<LocationTree> list) {
return FromReportTree(list, t => new JsonTreeView(t.sno, t.desc, ... ));
}
关于C#传递匿名参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15642210/