C#传递匿名参数?

标签 c#

抱歉,我找不到正确的标题。我有不止一种返回相同结果的方法。

返回类型

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/

相关文章:

c# - 为什么在使用 async await 时抛出 UnobservedTaskException?

c# - 将结构内的整数指针编码为回调

c# - 如何在用户输入时捕获所有输入到文本框中的字符?

c# - 如何最好地将 VB6 "Select Case 1067 To 2938..."转换为 C#?

c# - .NET 中的 Cookie 和 session 过期

c# - Visual Studio 2010 $(PlatformName) 宏与 MSBuild.exe 不兼容

c# - 有人可以解释一下 C# CngKey.Create 吗?

c# - 添加引用不起作用,因为项目以 .NET Core 为目标,而文件引用以 .NET Framework 为目标

c# - 如何使用区域短日期将日期时间转换为字符串

c# - 将 'Xamarin.Forms' 添加到...未将对象引用设置为对象的实例。添加 nuget 包时出现错误