Delegaty do obiektów

Odpowiedz Nowy wątek
2014-12-23 09:14
0

Witam! Mam dwa formy z czego jeden jest głównym oknem aplikacji, a na drugi ma za zadanie wczytywać właściwości jego obiektów. Najpierw chciałem zrobić to za pomocą dziedziczenia i upubliczniania obiektów, ale niestety nie działa. Potem próbowałem zawrzeć wszystkie obiekty w liście i przekazywać je jako całość. Niestety też nie działa. Ostatnie co przychodzi mi do głowy to delegaty. Niestety nie wiem jak zadeklarować delegatę, która wskazuje na obiekt i daje dostęp do jego wartości. Pomożecie? ;)

Pozostało 580 znaków

2014-12-23 10:02
1

delegat to (mniej-więcej) wskaźnik na funkcję. Nie może istnieć coś takiego jak delegat na obiekt z samej definicji.
Wskaźnik na obiekt to po prostu zwykła referencja.

Jak jedna klasa ma pole: Obiekt costam; a druga klasa powie, klasa1.costam = new Obiekt() { Wartosc = 1, Wartosc2 = 2, ... } to klasa 1 będzie miała dostęp do obiektu i wszystkich jego elementów. Tylko muszą być w jakiś sposób przekazywane obiekty - czy to przez publiczne pola, właściwości, czy metody.

Pozostało 580 znaków

2014-12-23 13:11
0

Co do dziedziczenia w Twoim przypadku to "nie tędy droga".
Jak opisujesz jakiś system (w sporym uproszczeniu) i byś powiedział obiekt2 jest rozbudowanym/wyspecjalizowanym obiektem1 to masz dziedziczenie, jakbyś raczej powiedział obiekt1 zawiera/ma obiekt2 to jest agregacja.

Próbowałeś przekazać jedną formę do drugiej i tam wybrać z niej wartości, które potrzebujesz? (Mimo, że to słabe rozwiązanie to powinno działać).
Trochę lepszą może być kontener, który będą znały obie formy i będą operowały na obiektach w nim zawartych.
Kolejne napisać kontroler, który będzie agregował obie formy i obiekty zasilające formularze i w nim będzie zawarta większa część logiki.

edytowany 1x, ostatnio: Xiuthechutli, 2014-12-23 13:16
asocjacja, agregacja jest wtedy, gdy obiekt zawiera kolekcję innych obiektów. - somekind 2014-12-25 02:14

Pozostało 580 znaków

2014-12-23 13:27
0

Ruszyło gdy przekazałem formę jako argument. Nie działało wcześniej ponieważ wątki się gryzły(brak dostępu). Taki kod załatwił sprawę:

if (InvokeRequired)
                this.Invoke(new MethodInvoker(delegate()
                { 
    }));

Xiuthechutli, kontener powinien zawierać obiekty czy odwołania do nich?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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