作者:男儿有志不言苦 | 来源:互联网 | 2024-11-24 09:41
根据@Leigh Shepperson的建议,我们可以利用LINQ简化代码量,实现从类中提取JSON属性名称的功能。这里提供一个辅助方法,该方法能够有效地完成这一任务:
using System.Linq;
using System.Reflection;
using Newtonsoft.Json;
...
public static string ExtractJsonFieldNames(Type classType)
{
return string.Join(",",
classType.GetProperties()
.Select(p => p.GetCustomAttribute())
.Where(a => a != null)
.Select(a => a.PropertyName));
}
此方法可以通过以下方式调用,以生成包含字段名称的查询字符串部分:
string queryPart = "&fields=" + ExtractJsonFieldNames(typeof(MyModel));
对于使用.NET Framework 3.5的用户,如果无法直接使用GetCustomAttribute
泛型方法,可以通过组合使用GetCustomAttributes
方法、SelectMany
以及Cast
来达到同样的效果:
return string.Join(",",
classType.GetProperties()
.SelectMany(p => p.GetCustomAttributes(typeof(JsonPropertyAttribute), false)
.Cast())
.Select(a => a.PropertyName)
.ToArray());