#c# #automapper
#c# #automapper
Вопрос:
Я пытаюсь создать универсальный метод расширения, который работает с любым классом и сопоставляет его данные с другим предоставленным классом.
Чего я пытаюсь достичь, так это следующего
У меня есть класс User и другой класс UserVM
User dbUser = new User();
UserVM userMapped = dbUser.MapToViewlModel<UserVM>();
И из внутренней реализации метода я буду использовать AutoMapper Mapper.Map()
Вот мой код
public static class DataMapperExtensions
{
public static M MapToViewModel<M>(this T input)
where T : class
where M: class
{
return Mapper.Map<T, M>(input);
}
}
T никогда не компилируется, я даже попробовал приведенный ниже код:
public static class DataMapperExtensions<T> where T: class
{
public static M MapToViewModel<M>(this T input)
where M: class
{
return Mapper.Map<T, M>(input);
}
}
В приложениях DataMapperExtensions подчеркиваются слова «Метод расширения должен быть определен в неродовом статическом классе».
Возможно ли вообще то, о чем я прошу? Пожалуйста, дайте мне знать и заранее спасибо.
Ответ №1:
Вам нужно использовать
public static M MapToViewModel<T,M>(this T input)
Комментарии:
1. и использование будет выглядеть как UserVM mappedUser = dbUser.MapToViewModel<Пользователь, UserVM>(); ?