自动映射:映射到接口

时间:2011-10-31 08:56:55

标签: interface automapper

我正在使用AutoMapper在实体和接口之间进行映射

首先我创建了我的映射并检查它是否有效。

AutoMapper.Mapper.CreateMap<User, IUserViewModel>();
AutoMapper.Mapper.AssertConfigurationIsValid();

然后我创建了一个使用此映射的方法:

public IUserViewModel GetUser(int id)
{
      var user= _userRepository.GetByKey(id);

      var currentUser = Mapper.Map<User, IUserViewModel>(user);

      return currentUser;

}

我在我的代码的另一个地方使用此方法

 IUserViewModel myUser = XXXXX.GetUser(3);

此问题是 myUser 始终为空。

但是,当我调试我的方法并在返回之前在其中停止juste时,我可以看到我的对象 currentSupplier 已创建并正确填充。

但是当方法返回时,我得到一个空值。

我想这与我的对象 currentSupplier 创建的事实有关 代理&LT; ....&GT;

任何帮助?

谢谢。

1 个答案:

答案 0 :(得分:0)

添加我的代码的完整副本,证明上述内容对我有用 - 无法将其纳入评论。

class Program
{
    static void Main(string[] args)
    {
        Program program = new Program();
        IUserViewModel myUser = program.GetUser(3);
        Console.WriteLine(myUser.Name);  // Prints Frank
        Console.Read();
    }

    public Program()
    {
        Mapper.CreateMap<User, IUserViewModel>();
        Mapper.AssertConfigurationIsValid();
    }

    private UserRepo _userRepository = new UserRepo();

    public IUserViewModel GetUser(int id)
    {
        var user = _userRepository.GetByKey(id);

        var currentUser = Mapper.Map<User, IUserViewModel>(user);

        return currentUser;
    }
}

public class UserRepo
{
    public User GetByKey(int id)
    {
        return new User { Name = "Frank" };
    }
}

public interface IUserViewModel
{
    string Name { get; set; }
}

public class User
{
    public string Name { get; set; }
}

您是否可以添加一些其他内容来显示失败的位置?