ValueInjecter посоветуйте архитектуру - PullRequest
1 голос
/ 23 декабря 2011

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

По сути, я хочу получить значение карты из модели представления

public class RegisterModel
{
    [Required]
    [DataType(DataType.EmailAddress)]
    [Display(Name = "Email address")]
    public string Email { get; set; }

    [Required]
    [ValidatePasswordLength]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [DataType(DataType.Password)]
    [Display(Name = "Confirm password")]
    [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
    public string ConfirmPassword { get; set; }

    [Required]
    [StringLength(255)]
    [Display(Name = "First Name")]
    public string FirstName { get; set; }

    [Display(Name = "Middle Name")]
    public string MiddleName { get; set; }

    [Required]
    [StringLength(255)]
    [Display(Name = "Last Name")]
    public string LastName { get; set; }
}

в мой домен

public class UserInfo : EntityBase
{
    public UserInfo()
    {
        PersonName = new PersonName();
    }

    public virtual string Email { get; set; }

    public virtual string Password { get; set; }

    public virtual PersonName PersonName { get; set; }
}

public class PersonName
{
    public string FirstName { get; set; }

    public string MiddleName { get; set; }

    public string LastName { get; set; }

    public string Fullname1
    {
        get { return string.Format(@"{0}, {1} {2}", LastName, FirstName, MiddleName); }
    }

    public string Fullname2
    {
        get { return string.Format(@"{0} {1} {2}", FirstName, MiddleName, LastName); }
    }
}

Я попробовал этот код, и он работает, но не уверен, что это лучший способ сделать это

        var newuserinfo = new UserInfo();
        newuserinfo.InjectFrom(model);
        newuserinfo.PersonName.InjectFrom(model);

А где в структуре системы вписывается структура сопоставления объект-объект, например, valueinjecter? Я думаю о написании модульных тестов для моего отображения объектов.

1 Ответ

1 голос
/ 25 декабря 2011

В codeplex есть пример проекта, который использует ValueInjecter для сопоставления сущностей с ViewModels и обратно: http://prodinner.codeplex.com/

В общем, пока все работает, все в порядке, и если это не так, вы собираетесь рефакторинг после этого, когда увидите более широкую картину

...