EmitMapper 사용

14558 단어 mapper
전송: http://www.cnblogs.com/aaa6818162/archive/2012/06/21/2557879.html
EmitMapper 는 오픈 소스 실체 맵 프레임 워 크 입 니 다. 주소: http://emitmapper.codeplex.com/.
      EmitMapper 는 매 핑 효율 이 높 고 하 드 코딩 에 가깝다.EmitMapper 는 emit 방식 으로 운행 할 때 동적 으로 IL 을 생 성 하 는데 다른 맵 프레임 워 크 는 주로 반사 체 제 를 사용한다.또한 Emitmapper 는 상 자 를 뜯 어 포장 하 는 작업 과 매 핑 과정 에서 의 추가 호출 을 최대한 줄 였 다.
      EmitMapper 는. net 의 모든 플랫폼 을 지원 합 니 다. Framework 3.5, Microsoft Silverlight 3, Mono.
 
      EmitMapper 의 사용 은 매우 간단 해서 어떠한 맵 정책 도 지정 할 필요 가 없습니다.시스템 은 기본 맵 설정 기 DefaultMapConfig 를 사용 하여 맵 작업 을 완료 합 니 다.
 
EmitMapper的使用
//=> 、(       )         ;       ,            ToString。(             )

            //=》   

            //ObjectsMapper<Sourse, Dest> mapper =

            //ObjectMapperManager.DefaultInstance.GetMapper<Sourse, Dest>();

            //Dest dst = mapper.Map(src);



            //=》   

            Dest dst = null;

            dst = ObjectMapperManager.DefaultInstance.GetMapper<Sourse, Dest>().Map(src, dst);



            //=》 、        

            ObjectsMapper<Sourse, Dest> mapper1 =

                new ObjectMapperManager().GetMapper<Sourse, Dest>

                (

                 new DefaultMapConfig()

                .IgnoreMembers<Sourse, Dest>(new string[] { "A" })

                .NullSubstitution<decimal?, decimal>((value) => { return -1M; }) //       ,     return;     return,         { return }

                //.NullSubstitution<decimal?, decimal>((value) =>  -1M)

                .ConvertUsing<Inner, Inner2>(value => new Inner2 { D12 = value.D1, D22 = value.D2 })

                //.ConvertUsing<Inner, Inner2>(value => { return new Inner2 { D12 = value.D1, D22 = value.D2 }; })

                //=>      

                //.PostProcess<Dest>((value, state) =>

                //{

                //    value.F = "nothing";

                //    value.A = 111;

                //    return value;

                //})

                //);

                //=>return   

                //.PostProcess<Dest>((value, state) =>

                //{

                //    return new Dest

                //    {

                //        F = "nothing",

                //        A = 111,

                //    };

                //})

                //.PostProcess<Dest>((value, state) =>

                //    new Dest

                //    {

                //        F = "noting",

                //        A = 111,

                //    })

                //);

                .PostProcess<Dest>((Dest value, object state) =>

                    new Dest

                    {

                        F = "noting",

                        A = 111,

                    })

                );

            Dest dst1 = mapper1.Map(src);



            //=>  

            //=>    

            //EmitMapper.MappingConfiguration.MappingOperations.ValuesPostProcessor<Dest> ValuesPostProcessor1 = delegate(Dest dest1, object state) { return new Dest { }; };

            EmitMapper.MappingConfiguration.MappingOperations.ValuesPostProcessor<Dest> ValuesPostProcessor2 = (d, s) => { return new Dest { }; };

View Code
EmitMapper 의 사용 소결 (괜 찮 습 니 다)
http://www.cnblogs.com/ariklee/p/3833598.html
 
자신 이 정리 한 데모 다운로드:
http://files.cnblogs.com/files/zfanlong1314/EmitMapperComponent.zip
 
Customization using default configurator
Customization overview Custom converters Custom converters_for_generics Null substitution Ignoring members Custom constructors Shallow and_deep_mapping Names matching Post processing

좋은 웹페이지 즐겨찾기