【发布时间】:2013-04-09 12:50:24
【问题描述】:
我实现了一个自定义 IContractResolver,以便我可以从我的 Web API 中动态过滤出对象的某些属性。例如,GetEmployees 操作将过滤掉返回的每个员工的“Id”属性。
public IEnumerable<Employee> GetEmployees()
{
var ignoreList = new List<string> {"Id"};
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new JsonContractResolver(ignoreList);
return db.Employees.AsEnumerable();
}
问题是在同样的方法中,我想将合约解析器设置回它的默认值。像这样的:
public IEnumerable<Employee> GetEmployees()
{
var defaultContractResolver = GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver;
var ignoreList = new List<string> {"Id"};
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new JsonContractResolver(ignoreList);
// Serialize object
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = defaultContractResolver;
// return serialized object
}
实现这一目标的最佳方法是什么?
【问题讨论】:
标签: c# json.net asp.net-web-api