2016-04-21 16 views
3

でAutoMapperプロファイルを登録するにはどうすれば以下のAutoMapperプロファイルがあります。ユニティ

public class AutoMapperBootstrap : Profile 
{ 
    protected override void Configure() 
    { 
     CreateMap<Data.EntityFramework.RssFeed, IRssFeed>().ForMember(x => x.NewsArticles, opt => opt.MapFrom(y => y.RssFeedContent)); 
     CreateMap<IRssFeedContent, Data.EntityFramework.RssFeedContent>().ForMember(x => x.Id, opt => opt.Ignore()); 
    } 
} 

をそして、私はこのようにそれを初期化しています:

​​

私は私のコンストラクタでそれを注入しよう:

private IMapper _mapper; 
public RssLocalRepository(IMapper mapper) 
{ 
    _mapper = mapper; 
} 

は、私は次のエラーを受け取ります

The current type, AutoMapper.IMapper, is an interface and cannot be constructed. Are you missing a type mapping?

DIを使用してマッパーを使用できるように、AutoMapperプロファイルをUnityで正しく初期化するにはどうすればよいですか?

答えて

8

あなたの例では、名前のマッピング作成されています

// named mapping with "Mapper name" 
container.RegisterInstance<IMapper>("Mapper", config.CreateMapper()); 

をしかし、どのようにあなたのリゾルバは、この名前を知っているのだろうか?

あなたが名前のないあなたにマッピングを登録する必要があります。

// named mapping with "Mapper name" 
container.RegisterInstance<IMapper>(config.CreateMapper()); 

それはIMapperインタフェースにごマッパーのインスタンスをマップすると、このインスタンスは、あなたがそうのようにそれを登録することができますインターフェイス