如何解决这是编写自定义合同解析器的正确方法吗?
我正在使用.NET Core 3.1(将Dapper与Oracle作为数据库)编写REST API。现在,所有dapper扩展方法(例如QuerySingleOrDefaultAsync,QueryAsync)始终映射为大写。例如
var result = await conn.QuerySingleOrDefaultAsync<EmployeeModel>(query,commandType: CommandType.Text);
始终映射到
public class EmployeeModel
{
public string FIRST_NAME;
}
然后与CamelCasePropertyNamesContractResolver()一起使用时的json输出如下所示
{"firsT_NAME":"Test name"}
我想要它如下
{"firstName":"Test name"}
所以,我想到了如下使用MyContractResolver
public class MyContractResolver: DefaultContractResolver
{
protected override JsonProperty CreateProperty(MemberInfo member,MemberSerialization serialization)
{
var property = base.CreateProperty(member,serialization);
property.PropertyName = property.PropertyName.CamelCase();
return property;
}
}
CamelCase是字符串扩展方法
public static string CamelCase(this string str)
{
TextInfo cultInfo = new CultureInfo("en-US",false).TextInfo;
str = str.ToLower().Replace("_"," ");
str = cultInfo.ToTitleCase(str);
str = Char.ToLowerInvariant(str[0]) + str.Substring(1);
str = str.Replace(" ","");
return str;
}
这给了我我想要的东西,但这是正确的方法吗?这种方法有什么问题?我看着FluentMap,但对我来说似乎很详尽。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。