3
A
답변
2
당신이 opt.Skip가 here을 제안하여 시도 가지고
[TestMethod]
public void TestMethod4()
{
var a = new A { Nested = new NestedA { V = 1, S = "A" } };
var b = new B { Nested = new NestedB { V = 2, S = string.Empty } };
Mapper.CreateMap<B, A>();
Mapper.CreateMap<NestedB, NestedA>().ForMember(s => s.S, opt => opt.Condition(src => !string.IsNullOrWhiteSpace(src.S)));
var result = Mapper.Map(b, a);
Assert.AreEqual(2, result.Nested.V); // OK
Assert.AreEqual("A", result.Nested.S); // FAIL: S == null
}
감사 : 임 다음 코드를 시도했다.
Mapper.CreateMap<NestedB, NestedA>()
.ForMember(s => s.S, opt => opt.Skip(src => !string.IsNullOrWhiteSpace(src.S)));
편집 : 소스의 뒷조사 후
. TypeMapObjectMapperRegistry 클래스 (중첩 된 객체의 매핑을 처리하는 클래스)에서 UseDestinationValue를 사용하여 대상 값을 보존해야하는지 확인하기 전에 반환한다는 것을 알았습니다. 그렇지 않으면,이 제안 거라고 :
Mapper.CreateMap<B, A>();
Mapper.CreateMap<NestedB, NestedA>()
.ForMember(s => s.S, opt => opt.Condition(src => !string.IsNullOrWhiteSpace(src.S)))
.ForMember(s => s.S, opt => opt.UseDestinationValue());
내가 지미 여기에 핵심 문제를 해결하기 보인다 this을 발견했다.
그래서, 내가 찾은 바에 따르면, Condition과 UseDestinationValue를 동시에 사용하는 방법이없는 것처럼 보입니다.
관련 문제
- 1. std :: map :: const_iterator가있는 템플릿 클래스의 중첩 구조체
- 2. C++ 클래스의 정적 멤버
- 3. Automapper - 중첩 엔티티
- 4. AutoMapper 2.1.265에 누락 된 멤버
- 5. 멤버 함수 포인터의 std :: map?
- 6. AutoMapper 복잡한 중첩 된 매핑
- 7. AutoMapper - 각 멤버에 대한 멤버 매핑 차단
- 8. 중첩 클래스의 '액세스하는 클래스에 대한 액세스'개인 데이터 멤버
- 9. 인스턴스 클래스의 정적 멤버
- 10. 클래스의 멤버 범위
- 11. 개인 클래스의 멤버 액세스
- 12. 클래스의 C++ 정적 멤버
- 13. Grails 도메인 클래스의 newInstance (map)?
- 14. 중첩 된 멤버 형식 인식
- 15. AutoMapper - 선택한 하위 속성을 유지하면서 중첩 매핑
- 16. 원본 중첩 컬렉션에서 다른 컬렉션으로 AutoMapper 맵
- 17. AutoMapper ObjectId에서 중첩 된 개체를 매핑하는 방법
- 18. MVC 및 Automapper 다중 레벨 중첩
- 19. 클래스의 초기화되지 않은 상수 멤버
- 20. 지정된 클래스의 멤버 변수를 전달합니다.
- 21. 클래스의 일반 클래스 멤버 사용
- 22. 클래스의 모든 멤버 변수를 초기화해야합니까?
- 23. 자동 완료 다른 클래스의 멤버
- 24. "Activity"클래스의 멤버 변수 지속성
- 25. C# : 기본 클래스의 정적 멤버
- 26. 클래스의 멤버 객체 생성자 호출
- 27. .aspx 클래스의 정적 멤버 범위
- 28. 클래스의 파생 멤버 재정의 override
- 29. Java 클래스의 멤버 유효성 확인
- 30. 클래스의 멤버 복사와 혼동 됨
Im은 AutoMapper v2를 사용하며 건너 뛰기 옵션이 없습니다. – user1183964