我有一个域模型,我已成功使用自定义IContractResolver扩展CamelCasePropertyNamesContractResolver,使用实现IControllerConfiguration的自定义属性删除控制器级别的特定属性。
我现在处于这样一种情况,我需要根据特定的Action公开我正在删除的属性。我的计划是简单地将我的合同解决方案更改为:
public MyContractResolver(bool expose = false)
并更新我如何使用ContractResolver(即每次操作创建新的JsonSerializerSettings)。
我面临的问题是为每个对象缓存了契约,并且没有在新实例上调用CreateProperties
,因此忽略了“暴露”逻辑(实际上它是第一个被调用的人缓存)。
我可以通过简单地扩展我的自定义合约解析器来解决这个问题,但我希望能够动态调整1。那可能吗?是否有更好的方法来改变行为,而不是修改构造函数?
谢谢,