Automapper: 映射到接口

3
我正在使用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一直是null。

然而,在我调试方法并在返回前停止时,我可以看到我的对象currentSupplier正确创建并填充。

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

我猜想这与我的对象currentSupplier被创建为代理<....>有关。

需要帮助吗?

谢谢。


嗨,我已经按照你的代码进行了复制,它对我来说运行良好。 - Dave Walker
1个回答

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; }
}

你能添加一些额外内容来显示出问题所在吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接