Правильно ли использовать интерфейсы таким образом, есть ли лучший вариант?

Привет, ребята, уже 5 часов утра, я делал код ... когда это пришло out:

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 не выполняя слишком много параметров, я нашел в интерфейсах способ сказать, что такое каждый из объектов, что они выполняют.

Что мне кажется странным, так это эти интерфейсы без метода внутри.

Итак, что вы парни подумайте об этом? Есть ли где-нибудь классный блог / документ / и т.д. об этом? Ты хоть представляешь, как это лучше? Может мне лечь спать прямо сейчас?

Другое дело, .Net предлагает много новых способов делать что-то ... например, linq, лямбда, методы расширения, деревья выражений ... есть ли какие-нибудь исследования "хороших практик" с этими вещами?

Я думаю, что это огромно, и заставляет ваш мозг думать иначе, когда вы решаете проблему ... Я хотел бы увидеть, что люди думают / делают с этим.

Спасибо за advance

1
задан Leonardo Uzon Nowaczyk 17 October 2010 в 07:27
поделиться