2
내 웹 API에서 개체의 특정 속성을 동적으로 필터링 할 수 있도록 사용자 지정 IContractResolver를 구현했습니다. 예를 들어 GetEmployees 액션은 반환 된 각 직원의 "Id"속성을 필터링합니다.웹 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
}
이 작업을 수행하는 가장 좋은 방법은 무엇입니까?
그래서 데이터베이스에서 요청한 직원을 반복하여 반환 할 특수 오브젝트의 새 목록을 만드시겠습니까? –
예. 특별한 경우에는 특수 데이터 객체. 개인적으로 나는 어쨌든 (비록 그들이 POCO이든 관계없이) 직접 데이터베이스 객체를 반환하는 팬이 아니며, DTO 객체로부터 객체를 분리합니다. – JustAnotherUserYouMayKnow