나는 내 컨트롤러에서 내 Global.aspx내 AutoMapper 고객 ValueResolver 후크에 어떤 문제가 있습니까?
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
AutoMapper.Mapper.CreateMap<FormCollection, Models.IAmACustomer>().ForAllMembers(form => form.ResolveUsing<Models.FormCollectionValueResolver<Models.IAmACustomer>>());
}
에 다음 훅이 :이 줄은 실행하지만 내 사용자 지정 해결이 호출되지 않습니다
[HttpPost]
public ActionResult Create(FormCollection formCollection)
{
var customer = AutoMapper.Mapper.Map<FormCollection,Models.IAmACustomer> (formCollection,null);
}
.
리졸버는 다음과 같습니다
public class FormCollectionValueResolver<TDestination>:ValueResolver<FormCollection,TDestination>
{
//Code removed for brevity
}
응용 프로그램 컴파일 및 실행은, 그러나 사용자 지정 해결하지 않고, 아무것도 객체로 온다, 그냥 예외 던지는와 모의 객체 접근을 얻을 만듭니다.
유형 변환기는 모든 프로젝트에서 사용하는 모든 비즈니스 객체의 수동 이름 매핑을 사용하지 않습니다. automapper가이를 사용하는 방법을 파악할 수 있다면 바랄 것입니다. 컨트롤러가 아닌 모델 바인더에서 변환을하는 것이 유리한 것은 아닌가요? 또한 유효성 검사 또는 변환에 고객 개체가 예외를 throw하는 잘못된 사용자 입력과 같은 문제가있는 경우이 대답은 문제를 해결하지 못하는 것으로 보입니다. – Maslow
나는 원래의 대답에서 조금 성급했다. 나는 그것의 완전한 편집을했다. 바라기를 나의 새로운 대답은 조금 더 도움이 될 것입니다. – mrydengren
이 답변을 올바르게 이해하면'ForAllMembers()'는 커스텀 정의 된'.ForMember' 속성에만 적용됩니까? 여기에 제네릭을 정의 할 수있는 방법이 있습니까? 여기서는 각 속성을 명시 적으로 정의하지 않고 필요한 속성 이름을 어디에 있습니까? – Maslow