2
我實現了一個自定義IContractResolver,以便可以從Web API動態過濾出對象上的某些屬性。例如,操作GetEmployees將過濾掉每個退回的員工的「Id」屬性。Web API自定義IContractResolver
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
}
實現此目的的最佳方法是什麼?
因此,循環訪問數據庫中請求的員工並創建要返回的專用對象的新列表? – 2013-04-09 13:16:20
是的。特殊情況下的特殊數據對象。就個人而言,我不是直接返回數據庫對象的粉絲(不管他們是否是POCO),我將這些對象從DTO對象中分離出來。 – JustAnotherUserYouMayKnow 2013-04-09 13:28:24