.net core 3.1 这是编写自定义合同解析器的正确方法吗?

.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

我正在使用.NETCore3.1编写RESTAPI,使用Dapper和Oracle作为数据库。现在,所有简洁的扩展方法,如QuerySingleOrDefaultAsync、QueryAsync,总是映射到大写。e、 g

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;
        }