在 .NET Core 中不使用 Json属性 的不区分大小写 属性 绑定

Case-Insensitive Property Binding Without Using JsonProperty in .NET Core

我有一个 C# ASP.NET Core Web Api 应用程序和 C# ASP.NET Core MVC 个应用程序

在这种情况下,MVC 应用使用如下模型调用 API 应用(客户端是通过 AutoRest 生成的):

var thing = await thingApi.ThingPost(new ThingModel { ThingID = ThingID });

此时,我可以调试以查看 ThingID 设置了我的值。当我调试 API 应用程序时,我可以看到 属性 没有传输... 属性 定义如下:

public long ThingID { get; set; }

然而,当我用

装饰它时
[JsonProperty(PropertyName = "thingID")]

然后绑定值。我想弄清楚如何绑定它而不必用该属性装饰它。某种不区分大小写的解析器之类的?

我试过使用:

.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());

.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver());

在没有更新客户端的情况下,两者都无法解析 属性。问题是我不想让客户改变。它应该按现在的样子生成,但我希望将值绑定到 属性 而不管客户端中的情况如何。我该怎么做?

我找到了罪魁祸首...我的模型继承自 base class(我可能应该在我的问题中提到)并且我的 base class 装饰有:

[DataContract]

这显然会强制您指定要公开的每个属性...所以有点麻烦。