2014-07-07 4 views
2

automapper 3.2.1을 unity 3.0.1304.1로 등록하려고합니다. 나는 행운과 함께 StackOverflow에서 일반적인 등록 답변을 시도했다. 단서로 최신 자동 매매를 올바르게 등록하는 방법에 대한 단서가 있습니까? 가장 최근 버전에서 변경된 사항이 있습니까? 코드 아래 예외 :유니티로 오토 매퍼 등록


과 같이 등록 :

다음
container.RegisterType<ConfigurationStore, ConfigurationStore>(new ContainerControlledLifetimeManager(), new InjectionConstructor(typeof(ITypeMapFactory), MapperRegistry.Mappers)); 
container.RegisterType<IConfigurationProvider, ConfigurationStore>(); 
container.RegisterType<IConfiguration, ConfigurationStore>(); 
container.RegisterType<IMappingEngine, MappingEngine>(); 
container.RegisterType<ITypeMapFactory, TypeMapFactory>(); 

나는 다음과 같은 오류가 나타납니다

유형 IDictionary`2이없는을 접근 가능한 생성자. 시


는,이 해결된다

Resolving AutoMapper.MappingEngine,(none) (mapped from AutoMapper.IMappingEngine, (none)) 
    Resolving parameter "objectMapperCache" of constructor AutoMapper.MappingEngine(AutoMapper.IConfigurationProvider configurationProvider, AutoMapper.Internal.IDictionary`2[[AutoMapper.Impl.TypePair, AutoMapper, Version=3.2.1.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005],[AutoMapper.IObjectMapper, AutoMapper, Version=3.2.1.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005]] objectMapperCache, System.Func`2[[System.Type, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] serviceCtor) 
    Resolving AutoMapper.Internal.IDictionary`2[AutoMapper.Impl.TypePair,AutoMapper.IObjectMapper],(none) 
+0

이것은 제 3 자 프레임 워크에 속하는 공용 유형을 등록하십시오. 어쨌든 AutoMapper 상단에 추상화 레이어를 제공하지 않고 대신 등록하는 것을 중단시키는 것은 무엇입니까? –

+0

나는 당신의 말을 듣고있다. 나는 많은 사람들이 그렇게 일한다고 말했기 때문에 나는이 일을하려고 애썼다. 포장하는 데는 문제가 없습니다. 그렇게하는 것이 내가가는 길일 것입니다. 답장을 보내 주셔서 감사합니다. – user3779599

답변

1

같은 IMappingEngine 등록에 InjectionConstructor을 사용해보십시오 : 당신은 정말해서는 안되는 이유

container.RegisterType<IMappingEngine, MappingEngine>(new InjectionConstructor(typeof(IConfigurationProvider))); 
+0

고마워, 나는 이것을 어느 시점에서 시도해 볼지도 모른다. 나는 맵핑 엔진에 어댑터를 설치하는 대신에 내가 조롱했다. – user3779599

+0

이러한 예외가 발생하는 이유는 Unity가 최대 매개 변수 (사용자의 경우 2)를 사용하여 해당 생성자를 사용하여 형식을 확인하려고하기 때문입니다. InjectionConstructor를 사용하면 Unity에게 특정 생성자를 대신 사용하도록 지시합니다. – Sat

관련 문제