Automapper: сопоставление с интерфейсом - PullRequest
3 голосов
/ 31 октября 2011

Я использую 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 создан как Proxy <....>

Любая помощь?

Спасибо.

1 Ответ

0 голосов
/ 09 февраля 2014

Добавление полной копии моего кода, которая доказывает, что вышеупомянутое работает для меня - не может вписаться в комментарии.

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

Не могли бы вы добавить дополнительный контент, чтобы показать, где это не удается?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...