在CreateMap上抛出异常

时间:2013-09-07 16:59:36

标签: c# automapper automapper-3

您好我正在尝试将AutoMapper添加到我的应用中,但我似乎在整合中遇到了一些问题。这就是我到目前为止所做的。

为了不创建与Automapper的直接依赖关系,我已经为它的最基本功能创建了一个简单的maping:

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我想创建一个映射:

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 products = productCatalogService.GetProducts();     ProductDTO ceva = products.FirstOrDefault();     var productsDataContract = mapper.Map(ceva);

问题在于,当我运行我的应用程序时,我尝试在CreateMap中尝试在Automapper中获得异常。这是类型初始化异常消息:

  

此平台IDictionaryFactory

不支持此类型

我做错了什么?

1 个答案:

答案 0 :(得分:5)

这听起来像reference issue。您应该引用AutoMapper.dll和 您的项目中的AutoMapper.Net4.dll。如果你通过nuget安装,这应该照顾你。

使用AutoMapper 3.0,不同平台的软件包发生了变化。