2011-10-31 145 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; } 
} 

你可以添加一些額外的內容來顯示這是失敗嗎?