カスタム 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
}
これを達成するための最良の方法は何ですか?