是否有可能拥有动态IContractResolver?

时间:2017-09-17 03:10:14

标签: c# asp.net-web-api json.net

我有一个域模型,我已成功使用自定义IContractResolver扩展CamelCasePropertyNamesContractResolver,使用实现IControllerConfiguration的自定义属性删除控制器级别的特定属性。

我现在处于这样一种情况,我需要根据特定的Action公开我正在删除的属性。我的计划是简单地将我的合同解决方案更改为:

public MyContractResolver(bool expose = false)

并更新我如何使用ContractResolver(即每次操作创建新的JsonSerializerSettings)。

我面临的问题是为每个对象缓存了契约,并且没有在新实例上调用CreateProperties,因此忽略了“暴露”逻辑(实际上它是第一个被调用的人缓存)。

我可以通过简单地扩展我的自定义合约解析器来解决这个问题,但我希望能够动态调整1。那可能吗?是否有更好的方法来改变行为,而不是修改构造函数?

谢谢,

0 个答案:

没有答案