2015-03-19 1 views
0

В моем окончательном назначении ASP.NET мне поручено использовать первый подход кода и добавить следующие свойства и Модели для представления описанных изменений.Что означает, что для «Человека» есть объект «Адрес»?

1) Лицо «имеет» объект Address (Этот класс был дан, но я изменил добавляющие свойства)

2) Объект Адрес имеет одно свойство типа строки для электронной почты. (Я создал этот класс)

namespace ContosoUniversity.Models 
{ 
    public class Address 
    { 
     [Required] 
     [RegularExpression(@"[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]  {2,4}")] 
     public string Email { get; set; } 

     [Required] 
     [Compare("Email")] 
     public string EmailConfirm { get; set; } 
    } 
} 

, но теперь я не уверен, что он имеет в виду в первой инструкции. Я исследовал состав, наследование и абстрактные классы, но до сих пор не знаю, что я должен делать?

Как я могу создать объект Address в классе person? Что это значит? Вот класс Person:

namespace ContosoUniversity.Models 
{ 
    public abstract class Person 
    { 
     public int ID { get; set; } 

     [Required] 
     [StringLength(50)] 
     [Display(Name = "Last Name")] 
     public string LastName { get; set; } 
     [Required] 
     [StringLength(50, ErrorMessage = "First name cannot be longer than 50  characters.")] 
     [Column("FirstName")] 
     [Display(Name = "First Name")] 
     public string FirstMidName { get; set; } 

     [Display(Name = "Full Name")] 
     public string FullName 
     { 
      get 
      { 
       return LastName + ", " + FirstMidName; 
      } 
     } 
    } 
} 

ответ

1

Это означает, что между человеком и адресом должно быть отношение «один к одному». У человека есть один адрес.

namespace ContosoUniversity.Models 
{ 
    public abstract class Person 
    { 
     public int ID { get; set; } 

     public Address Address {get; set;} 

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

     [Required] 
     [StringLength(50, ErrorMessage = "First name cannot be longer than 50 characters.")] 
     [Column("FirstName")] 
     [Display(Name = "First Name")] 
     public string FirstMidName { get; set; } 

     [Display(Name = "Full Name")] 
     public string FullName 
     { 
      get 
      { 
       return LastName + ", " + FirstMidName; 
      } 
     } 
    } 
} 

Теперь вы можете сделать что-то вроде этого (предполагая, что Person не абстрактный класс) ...

Person person = new Person(); 
person.Address = new Address(); 
person.Address.Email = "[email protected]"; 

Если ваш учитель сказал что-то вроде «человек может иметь несколько адресов» вы могли бы сделать что-то вроде этого (опущенные дублирующие линии для краткости):

public class Person 
{ 
    public IEnumerable<Address> Addresses {get; set;} 

    public Person() 
    { 
     Addresses = new List<Address>(); //initialize with an empty collection 
    } 
} 

, который позволит вам сделать это ...

Person john = new Person(); 
Address home = new Address(){Email = "[email protected]"}; //create a new address and set its Email property to a value in a single line 
Address work = new Address(){Email = "[email protected]"}; 
john.Addresses.Add(home); //Add the address to the Addresses collection of john 
john.Addresses.Add(work);