2011-10-31 49 views
3

我正在使用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始终为空。

然而,当我调试我的方法,并停止其内部返回前探微,我可以看到我的对象currentSupplier创建并正确填写起来。

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

我想这与我的目标currentSupplier作为 代理< ....>

任何帮助创建的事实呢?

谢谢。

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

你可以添加一些额外的内容来显示这是失败吗?