Проблема с картографированием Mapster. Сопоставление списка объектов со списком строкC#

Место общения программистов C#
Ответить
Anonymous
 Проблема с картографированием Mapster. Сопоставление списка объектов со списком строк

Сообщение Anonymous »

Я пытаюсь сопоставить модель обслуживания с моделью представления с помощью Mapster.

Моя модель обслуживания содержит список строк.

Моя модель представления содержит список типа RolesViewModel.

RolesViewModel имеет строковое свойство с именем RoleName.

Ниже приведены мои модели

Код: Выделить всё

public class UserViewModel
{
[Display(Name = "Email address")]
[Required(ErrorMessage = "The email address is required")]
[EmailAddress(ErrorMessage = "Invalid Email Address")]
public string Email { get; set; }

public List Roles { get; set; } = new List();
}

public class RolesViewModel
{
public RolesViewModel(string roleName)
{
RoleName = roleName;
}

public string RoleName { get; set; }
}

//Service Model
public class User
{
public string Email { get; set; }
public List Roles { get; set; } = new List();
}

//Service Return Model
public class ServiceResponse
{
public bool Success { get; set; } = false;
public Data.Enums.Exception Exception { get; set; }
public T ResponseModel { get; set; }

/// 
/// Allows Service Response  to be cast  to a boolean.
/// 
/// 

public static implicit operator bool(ServiceResponse response)
{
return response.Success;
}
}
Строка в моем контроллере, к которой я применяю сопоставление, выглядит следующим образом:

Код: Выделить всё

List viewModel = serviceResponse.ResponseModel.Adapt();
И, наконец, моя конфигурация сопоставления

Код: Выделить всё

public class Mapping : IRegister
{
public void Register(TypeAdapterConfig config)
{
config.NewConfig();
config.NewConfig();
config.NewConfig
();
config.NewConfig();
config.NewConfig();
}
}
Чтобы заставить отображение работать, я попытался обновить конфигурацию сопоставления до:

Код: Выделить всё

public class Mapping : IRegister
{
public void Register(TypeAdapterConfig config)
{
config.NewConfig();
config.NewConfig();
config.NewConfig
();
config.NewConfig().Map(dest => dest.Roles.Select(t => t.RoleName.ToString()).ToList(), src => src.Roles);
config.NewConfig().Map(src => src.Roles, dest => dest.Roles.Select(t => t.RoleName.ToString()).ToList());
config.NewConfig();
}
}
Но я получаю сообщение об ошибке:
"Неверное приведение из 'System.String' к 'ViewModels.RolesViewModel'.

Может ли кто-нибудь посоветовать мне, какая конфигурация мне нужна в моем классе сопоставления?>

Подробнее здесь: https://stackoverflow.com/questions/489 ... of-strings
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»