【问题标题】:C# Dynamic IEnumerable <class>C# 动态 IEnumerable <类>
【发布时间】:2021-04-09 04:06:48
【问题描述】:

任何人都知道如何将IEnumerable&lt;xxxxx&gt; 传递给方法。 XXXXX 是指任何类。 我想让它动态地接受任何课程。例如,&lt;student&gt;&lt;course&gt;&lt;semester&gt; 等。 目前它被固定为 Employee 类。

public IEnumerable<Employee> GetJsonFile(string strFolder, string strFileName)
{
      string strFile = Path.Combine(WebHostEnvironment.WebRootPath, strFolder, strFileName);
      using (var jsonFileReader = File.OpenText(strFile))
      {
        return JsonSerializer.Deserialize<Employee[]>(jsonFileReader.ReadToEnd(), new JsonSerializerOptions { PropertyNameCaseInsensitive = true});
      }
}

【问题讨论】:

  • 示例
  • 使用泛型。 Enumerable 其中 T 是一个类。

标签: ienumerable


【解决方案1】:

使用泛型。 IEnumerable&lt;T&gt; 其中 T 是一个类。 Generics Guide

【讨论】:

    【解决方案2】:

    不要使用&lt;Employee&gt;,而是使用&lt;T&gt;

    public IEnumerable<T> GetJsonFile<T>(string strFolder, string strFileName)
    {
        ...return JsonSerializer.Deserialize<T[]>...
    }
    

    然后,当您调用该方法时,您会为其提供类型。

    var x = GetJsonFile<student>(folder,file);
    

    更多信息请查询information on C# Generics

    【讨论】:

    • 我现在可以解决了。非常感谢您的指导。
    • 如何对 Web API 应用同样的东西?原代码: [HttpGet] public IEnumerable Get() { return GetJson.GetJsonFile("Data", "employee.json"); } } } 更改为following后,没有数据返回。为什么? [HttpGet] public IEnumerable Get() { return GetJson.GetJsonFile("Data", "employee.json"); }
    • 为什么要更改 WebAPI 版本?
    • 我有 2 个版本。服务中的 1 个(由您指导解决,谢谢)和 Web API 控制器中的另一个 1。现在我面临 Web API 控制器的问题。我想在服务中做同样的事情。
    • 您需要T 到某事public IEnumerable&lt;employee&gt; GET() {return GetJson.GetJsonFile&lt;employee&gt;("Data", "employee.json"); }
    猜你喜欢
    • 2018-03-26
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    相关资源
    最近更新 更多