Tworzenie obiektów dynamicznie podczas działania programu

0

Witam.Mam problem. Chcę zrobić program ala rejestracja pacjentów w przychodni. Utworzyłem klasę Patient. Chcialbym dodawać nowych pacjentów tworząc obiekty klasy Patient. Czy da się to zrobić dynamicznie podczas działania programu na bieząco? Czy muszę utworzyć najpierw obiekty klasy pacjent a dopiero później przypisywać im wartości podczas programu?To rozwiązanie wydaje mi się troche słabe. Próbowałem tworzyć to za pomocą activator.Creatinstance jednak pojawia sie problem z tworzeniem nazw obiektów na bieżąco. Ew. myślałem żeby zapisać do listy nazwy obiektów tylko że tutaj też pojawił się problem odnośnie typu nazwy.

 String AppName = System.Reflection.Assembly.GetEntryAssembly().GetName().Name;
                ObjectHandle handle = Activator.CreateInstance(AppName, "Patient");

                var patient1 = (Patient)handle.Unwrap();

nazwę patient1 i pozniej patient2,patient 3 itd chciałbym wczytywać np. z listy tylko ,że nie mogę stworzyć list . List<Patient> też ,bo wtedy muszę wczesniej zainicjowac obiekty. Ktos może pomoc i doradzic jak to przeskoczyć? A może to rozumowanie jest złe i jakiś inny lepszy pomysł? Dziękuję za pomoc

2

O co dokładnie chodzi? Przecież możesz trzymać listę pacjentów w List<Patient> a metodą tworzyć obiekt i dodawać do niej kolejnych pacjentów

class Przychodnia {
    private List<Patient> _patients;

    public void addPatient(...) {
        var next = new Patient(...)
        _patients.Add(next);
    }
}
0

dziękuję za pomoc własnie o to chodziło. Nie wiedziałem ,że mogę dodawać nowe obiekty do listy w ten sposób i potem komunikowac się z nimi poprzez indeks w liście. (myślałem ,że np. gdy bd. dodawał var next = new Patient(); do poszczególnych el. listy to tak naprawdę stworzę jeden obiekt tylko.
Z twoją pomocą zrobilem metode AddPatient z inicjalizacja pola name tego obiektu.

void AddPatient(string Name)
            {
                var next = new Patient();
                _Patients.Add(next);
                _Patients[_Patients.Count-1].name =Name;
            }
0

ok teraz zauważyłem ,że mogę to zastąpić 1 linijką :

_Patients.Add(new Patient() {name=naeme });

.Może komuś się przyda.

1 użytkowników online, w tym zalogowanych: 0, gości: 1