Привет, ребята, сейчас 5 утра, я делал какой-то код ... когда он вышел:
public interface IViewModel { }
public interface IToViewModel<T> where T : IViewModel { }
public static class MvcExtensions
{
public static T ToViewModel<T>(this IToViewModel<T> self)
where T : IViewModel
{
var instance = Activator.CreateInstance<T>();
//this line just copys the properties with the same name from one object to another
self.Reflected().CopyMatchingPropertiesTo(instance /*destiny*/);
return instance;
}
}
Моя точка зрения в этом коде такова:
public partial class UserInfo : IToViewModel<UserInfoViewModel> { }
public class UserInfoViewModel : IViewModel
{
[DisplayName("UserId")]
public Guid UserId { get; set; }
[DisplayName("User name")]
public string Username { get; set; }
[DisplayName("Email address")]
public string Email { get; set; }
}
public ActionResult Index(string username)
{
UserInfo userInfo = UserInfoHelper.Load(username);
UserInfoViewModel userInfoViewModel = userInfo.ToViewModel();
return View(userInfoViewModel);
}
Окс, этот код работает нормально, np.
Но мой вопрос об использовании интерфейсов ...
Моя цель - преобразовать объект EntityFramework в ViewModel для использования с представлениями ASP MVC.
не делая много передачи параметров, я нашел в интерфейсах способ сказать, что представляет собой каждый из объектов, что они выполняют.
Что странно для меня, так это то, что эти интерфейсы без метода внутри.
Так что вы, ребята, думаете об этом?
Есть ли где-нибудь какой-нибудь классный блогпост / doc / etc об этом?
У вас есть идеи, как это лучше?
Должен ли я пойти спать прямо сейчас?
Другое дело, что .Net предлагает множество новых способов ведения дел ... таких как linq, lambda, методы расширения, деревья выражений ... есть ли какие-либо исследования о "хороших практиках" с этими вещами?
Я думаю, что это огромно и заставляет ваш мозг думать иначе, когда вы решаете проблему ... Я хотел бы посмотреть, что люди думают / делают с этим.
Заранее спасибо