【问题标题】:How to use (string Obj) sent as parameter to avoid each time use name of model如何使用(字符串 Obj)作为参数发送以避免每次使用模型名称
【发布时间】:2021-06-27 11:32:38
【问题描述】:

如何用 MachineSettingModel 替换(字符串 Obj)。 如何使用(字符串 Obj)作为参数发送以避免每次使用模型名称。

public static async Task<List<MachineSettingModel>> GetData(string Obj,string uri)
{
    List<MachineSettingModel> Object = new List<MachineSettingModel>();
    try
    {
        using (var response = await ApiHelper.ApiClient.GetAsync(uri))
        {           
                if (response.IsSuccessStatusCode)
                {
                    var JsonString = await response.Content.ReadAsAsync<string>();
                    Object = JsonConvert.DeserializeObject<MachineSettingModel[]>(JsonString).ToList();
                }                            
            return Object;
        }
    }
    catch (Exception ex)
    {
        return null;
    }
}

【问题讨论】:

  • 你想避免这个参数调用函数吗?但是你想要这个 obj in 方法?
  • 欢迎来到 SO!顺便说一句,理解你的问题有点困难。可以通过一些示例提供更多背景信息,以了解您要实现的目标。?

标签: c# json asp.net-web-api


【解决方案1】:

我理解您的问题的方式是,您希望能够使用相同的方法来获取不同类型数据的列表。为此,您应该改用generic method。像这样的:

public static async Task<List<T>> GetData2<T>(string uri)
    where T : new() // Has to be a concrete class with a parameterless constructor
{

    List<T> resultList = new List<T>();

    try
    {
        using (var response = await ApiHelper.ApiClient.GetAsync(uri))
        {           
            if (response.IsSuccessStatusCode)
            {
                var JsonString = await response.Content.ReadAsAsync<string>();
                resultList = JsonConvert.DeserializeObject<List<T>>(JsonString);
            }                            
            return resultList;
        }
    }
    catch (Exception ex)
    {
        return null;
    }
}

然后这样称呼它:

var data = GetData2<MachineSettingModel>(someUri);
//...
var data = GetData2<SomeOtherModelType>(someOtherUri);

【讨论】:

  • 非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-21
  • 2018-10-15
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多