我想知道这段代码。 如何合并为一种方法?
两个方法都给出相同的结果。 但是参数是不同的。 在这种情况下如何合并?
我尝试合并此代码。但我失败了
关于IFormCollection
,IQueryCollection
public static class extFunc
{
public static string SerializeObject(this IFormCollection model)
{
if (model.Count == 0)
return string.Empty;
var dic = new Dictionary<string, string>();
foreach (var key in model.Keys)
dic.Add(key, model[key]);
return JsonConvert.SerializeObject(dic);
}
public static string SerializeObject(this IQueryCollection model)
{
if (model.Count == 0)
return string.Empty;
var dic = new Dictionary<string, string>();
foreach (var key in model.Keys)
dic.Add(key, model[key]);
return JsonConvert.SerializeObject(dic);
}
}
我希望像这样的代码。 但是这段代码失败了
public string SerializeObject<T>(T model) where T : ICollection<KeyValuePair<string, StringValues>>
{
if (model.Count == 0)
return string.Empty;
var dic = new Dictionary<string, string>();
foreach (var key in model.Keys)
dic.Add(key, model[key]);
return JsonConvert.SerializeObject(dic);
}
答案 0 :(得分:2)
您快到了。 IFormCollection
和IQueryCollection
都实现IEnumerable<KeyValuePair<string, StringValues>>
,如您的示例所示:
public static string SerializeObject(this IEnumerable<KeyValuePair<string, StringValues>> model)
{
if (!model.Any())
return string.Empty;
var dic = new Dictionary<string, string>();
foreach (var kv in model)
dic.Add(kv.Key, kv.Value);
return JsonConvert.SerializeObject(dic);
}