Problem z właściwościami (propertis)

0

Robię obiektową bazę danych i gdy chcę zrobić jakiś update w bazie dancyh to muszę operować na oryginalnych wartościach obiektu, dlatego gdy przypisuje dane do SelectedPerson to automatycznie przipisuje mi też dane do SelectedPersonTemp. Wygłada to tak:

 private Person _selectedPerson;
 
        public Person SelectedPerson
        {
            get { return _selectedPerson; }
            set
            {
                _selectedPerson = value;
                _selectedPersonTemp = value;
                OnPropertyChanged(nameof(this.SelectedPerson));
            }
        }
 
        private Person_selectedPersonTemp;
 
        public Person SelectedPersonTemp
        {
            get { return _selectedPersonTemp; }
            set
            {
                _selectedPersonTemp = value;
                OnPropertyChanged(nameof(this.SelectedPersonTemp));
            }
        }

i teraz nie wiem o co chodzi. Modyfikując dane z SelectedPersonTemp automatycznie modyfikuje mi dane w SelectedPerson, dlaczego tak się dzieje?

0

Zarówno do _selectedPerson jak i _selectedPersonTemp przypisujesz referencję do tego samego obiektu, więc czy odnosisz się przez _selectedPerson czy _selectedPersonTemp to i tak modyfikujesz ten sam obiekt.

0

To jak to zrobić żeby nie przypisywało referencji tylko robiło kopie obiektu?

0

Nie ma wbudowanej funkcji, która stworzy kopię obiektu. Jest możliwość użycia ICloneable oraz this.MemberwiseClone(), ale nie jest to polecana metoda (bo MemberwiseClone tworzy "płytką" kopię twojego obiektu; aby temu zaradzić ludzie wpadają na takie pomysły jak serializacja i deserializacja do MemoryStream, co utworzy kopię.

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