Почему не сохраняются данные в главном классе с использованием паттерна Decorator
Всем добрый день. Хотел бы спросить про работу паттерна проектирования Декоратор.
У меня класс Person. У него определено куча разных свойств. Есть класс Documents, который по сути переносит данные в класс Person. Есть декоратор который переносит данные в Documents. И есть классы Id_insurance, Passport, которые реализуют передачу данных определенным образом.
Задача такая. Динамически добавлять в класс Person, новые данные посредством использования других классов таких как Id_insurance, Passport. То есть:
Person person = new Documents();
person = new Insurance(123,person);
person = new Passport(
Name: "Name",
LastName: "LastName",
MidName: "<MidName",
"Россия", "ГУ МВД", new DateTime(2000, 2, 2), 123, new DateTime(2000, 2, 2), person);
В объекте должны быть данные, которые он получил от классов Passport, Insurance.
Но в выводе он ничего не выводит.
Я использую паттерны впервые и я вынужден их использовать из-за задания. Помогите пожалуйста.
Сам код:
namespace Person_Documents
{
public class Program
{
public static void Main()
{
Person person = new Documents();
person = new Insurance(123,person);
person = new Passport(
Name: "Name",
LastName: "LastName",
MidName: "<MidName",
"Россия", "ГУ МВД", new DateTime(2000, 2, 2), 123, new DateTime(2000, 2, 2), person);
Console.WriteLine(person.MidName);
Console.WriteLine(person.LastName);
Console.WriteLine(person.ID_Insurance);
}
}
abstract partial class Person
{
public string Name { get; set; }
public string LastName { get; set; }
public string MidName { get; set; }
public string PlaceOfBirthDay { get; set; }
public int ID_Insurance { get; set; }
public string Address_of_Passport { get; set; }
public DateTime DateOfBirth { get; set; }
public int Person_code { get; set; }
public DateTime DateOfPassport { get; set; }
public Person() // Стартовый ввод
{ }
public Person(int ID_Insurance) // Страховка
{
this.ID_Insurance = ID_Insurance;
}
public Person(string Name, string LastName, string MidName,
string PlaceOfBirthDay
, string address_of_Passport, DateTime DateOfBirth, int Person_code, DateTime DateOfPassport) // Паспорт
{
this.PlaceOfBirthDay = PlaceOfBirthDay;
this.Address_of_Passport = address_of_Passport;
this.DateOfBirth = DateOfBirth;
this.Person_code = Person_code;
this.DateOfPassport = DateOfPassport;
}
}
partial class Documents : Person
{
public Documents() : base() { }
public Documents(int ID_Insurance) : base(ID_Insurance) { }
public Documents(string Name, string LastName, string MidName,
string PlaceOfBirthDay,
string address_of_Passport, DateTime DateOfBirth,
int Person_code, DateTime datePassport)
: base(Name, LastName, MidName,
PlaceOfBirthDay, address_of_Passport, DateOfBirth, Person_code, datePassport) { }
}
abstract class DocumentDecorator : Person
{
protected Person person;
public DocumentDecorator(int ID_Insurance, Person person) : base(ID_Insurance)
{
this.person = person; // Страховка
}
public DocumentDecorator(
string Name, string LastName, string MidName,
string PlaceOfBirthDay,
string address_of_Passport, DateTime DateOfBirth,
int Person_code, DateTime dateTime ,Person person)
: base(Name, LastName, MidName,
PlaceOfBirthDay, address_of_Passport, DateOfBirth, Person_code, dateTime)
{
this.person = person;
}
}
class Insurance : DocumentDecorator
{
public Insurance(int ID, Person person) : base(person.ID_Insurance = ID, person)
{}
}
class Passport : DocumentDecorator
{
public Passport(string Name, string LastName, string MidName,
string PlaceOfBirthDay,
string address_of_Passport, DateTime DateOfBirth,
int Person_code,DateTime date, Person person)
: base(person.Name = Name, person.LastName = LastName, person.MidName = MidName,
person.PlaceOfBirthDay = PlaceOfBirthDay, person.Address_of_Passport = address_of_Passport,
person.DateOfBirth = DateOfBirth, person.Person_code = Person_code,
person.DateOfPassport = date,person)
{ }
}
}
