Допустим, у меня есть следующие два класса:
public class Person
{
public string Name { get; set; }
public string Address { get; set; }
}
public class Customer: Person
{
public string CustomerNumber { get; set; }
public string PaymentTerms { get; set; }
}
Теперь, если у меня есть человек, которого я хочу сделать клиентом, у меня, насколько мне известно, есть три варианта, и я надеюсь на совет, который является лучшим и по любым другим вариантам, возможно, используя новый динамический материал в C # 4.
Я могу добавить конструктор или свойство в Customer, которое принимает Person и присваивает значения базовому классу, например,
public Customer(Person person)
{
base.Name = person.Name;
base.Address = person.Address;
}
или я могу реализовать неупорядоченный набор средств доступа следующим образом:
public Person Person
{
set
{
Name = value.Name;
Address = value.Address;
}
}
или я могу объединить Person в Customer следующим образом:
public class Customer
{
public Person Person { get; set; }
public string CustomerNumber { get; set; }
public string PaymentTerms { get; set; }
}
Последнее для меня самое лучшее, за исключением того, что всегда приходится, например, доступ Customer.Person.Name
, а не просто Customer.Name
.