Почему не сохраняются данные в главном классе с использованием паттерна 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)
        { }
    }
}

Ответы (0 шт):