.net core 3.1 这是编写自定义合同解析器的正确方法吗?
我正在使用.NETCore3.1编写RESTAPI,使用Dapper和Oracle作为数据库。现在,所有简洁的扩展方法,如QuerySingleOrDefaultAsync、QueryAsync,总是映射到大写。e、 g.net core 3.1 这是编写自定义合同解析器的正确方法吗?,.net-core-3.1,restapi,.net Core 3.1,Restapi,我正在使用.NETCore3.1编写RESTAPI,使用Dapper和Oracle作为数据库。现在,所有简洁的扩展方法,如QuerySingleOrDefaultAsync、QueryAsync,总是映射到大写。e、 g var result = await conn.QuerySingleOrDefaultAsync<EmployeeModel>(query, commandType: CommandType.Text); 然后,当与CamelCasePropertyNamesC
var result = await conn.QuerySingleOrDefaultAsync<EmployeeModel>(query, commandType: CommandType.Text);
然后,当与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;
}
这是我想要的,但这是正确的方法吗?这种方法会出什么问题?我看了一眼,但我觉得这很复杂
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;
}