不使用.NET Core中的JsonProperty进行不区分大小写的属性绑定

时间:2018-02-01 02:00:27

标签: c# swagger asp.net-core-2.0 autorest

我有一个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());

{{1}}

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

1 个答案:

答案 0 :(得分:0)

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

[DataContract]

这显然会迫使你指定你想要暴露的每个属性......所以有点刻薄。