2013-09-07 5 views
2

Привет Я пытаюсь добавить AutoMapper в свое приложение, но у меня, похоже, есть некоторые проблемы с ним в eintegrationg.HEre это то, что у меня есть до сих пор.Exception throws on CreateMap

Для того, чтобы не создавать прямую зависимости к Automapper я создал простое картографирование для его самых основных функциональных возможностей:

public class AutoMapper : IAutoMapper 
{ 
    public void CreateMap<TFrom, TTo>() 
    { 
     Mapper.CreateMap<TFrom, TTo>(); 
    } 

    public TTo Map<TFrom, TTo>(TFrom data) 
    { 
     return Mapper.Map<TFrom, TTo>(data); 
    } 
} 

Я создал файл конфигурации:

public class AutoMapperConfig 
{ 
    private readonly IAutoMapper mapper; 

    public AutoMapperConfig(IAutoMapper mapper) 
    { 
     this.mapper = mapper; 
    } 

    public void RegisterMappings() 
    { 
     mapper.CreateMap<ProductDTO , ProductDataContract>(); 
    } 
} 

И добавил звонок в мой Global.Asax:

new AutoMapperConfig(new AutoMapper()).RegisterMappings(); 

У меня есть эти два объекта beetwen I хотите создать отображение:

public class ProductDTO 
{ 
    public int ProductId { get; set; } 
    public int CategoryId { get; set; } 
    public int SubcategoryId { get; set; } 
    public string Name { get; set; } 
    public decimal Price { get; set; } 
    public string Description { get; set; } 
    public string ImagePath { get; set; } 
    public int NumberOfProducts { get; set; } 
} 

public class ProductDataContract 
{ 
    public int ProductId { get; set; } 
    public int CategoryId { get; set; } 
    public int SubcategoryId { get; set; } 
    public string Name { get; set; } 
    public decimal Price { get; set; } 
    public string Description { get; set; } 
    public string ImagePath { get; set; } 
    public int NumberOfProducts { get; set; } 
} 

И в моем коде я поместил эту линию для целей тестирования:
Var продукции = productCatalogService.GetProducts(); ProductDTO ceva = products.FirstOrDefault(); var productsDataContract = mapper.Map (ceva);

Проблема заключается в том, что WHN я бег моего приложения я imediatly получить исключение в Automapper при попытке CreateMap.Here этого сообщение инициализации исключения типа:

Этого типа не поддерживается на этой платформе IDictionaryFactory

Что я делаю неправильно?

ответ

4

Это звучит как reference issue. У вас должна быть ссылка на AutoMapper.dll и AutoMapper.Net4.dll из вашего проекта. Если вы устанавливаете через nuget, это следует позаботиться о вас.

С помощью AutoMapper 3.0 произошли изменения в пакетах для разных платформ.

+0

ps - Я не уверен, почему вы не хотите напрямую использовать AutoMapper, но это ваш звонок. – dove

+0

У меня был рефери с обоими dll, и я все еще получал ошибку, но после того, как я добавил ссылку на Automapper 2, кажется, все работает – aleczandru