w jednej klasie dodanie do listy elementy i w drugiej klasie do tej samej listy dodanie elementow

0

Mam klasę Class1 i klasę Class2 dziedziczące po klasie BaseClass. W klasie Class1 jest metoda Method1(), a w klasie Class2 metoda Method2(). Mam zabezpieczenie takie, że ZAWSZE najpierw jest wywoływana metoda Method1() klasy Class1 a dopiero potem metoda Method2() klasy Class2 (tutaj przedstawię tylko ogólną charakterystykę klas).
W klasie Class1 w metodzie Method1() wykonuję operacje na rekordach w bazie danych, którym muszę zmienić status w bazie danych na 'przetworzone' po pewnych operacjach, ale nie mogę tego zrobić w Method1(), bo zaraz po Method1() zostanie wywołana Method2() z klasy Class2 gdzie również będzie praca na CZĘŚCIOWO wspólnych (ale nie w 100% tych samych) rekordach o statusie innym niż 'przetworzone'.
W związku z czym pomyślałem sobie, że może w nadklasie BaseClass utworzyć listę statyczną, inicjalizować ją w Method1() i dodać rekordy, w Method2() również dodać rekordy, które jeszcze nie występują na liście i na końcu Method2() zmienić statusy - czy to najlepsze rozwiązanie??

 
public class BaseClass
{
    protected static List<int> ids;
}

public class Class1 : BaseClass
{
    public void Method1()
    {
        ids = new List<int>();
        ids.Add(23);
    }
}

public class Class2 : BaseClass
{
    public void Method2()
    {
        ids.Add(47);

        //tutaj zmiana statusu rekordow z bazy o id rownym tym z listy ids
    }
}


Class1 c1 = new Class1();
Class2 c2 = new Class2();

c1.Method1();
c2.Method2();


0

Wszystko zależy od tego co robisz z częścią rekordów w Method1() i czy jest tam atrybut przetworzone/nieprzetworzone czy coś innego. Zawsze możesz zliczyć ile rekordów przetworczyła Method1(2) i od przetworzone_rekordy+1 zacząć to samo w Method(2). Warunek jeden: Muszą się wykonywać po kolei. Pokaż strukturę tabel. Może będzie wystarczył dodatkowy warunek selekcji.

0

Po opisie wydaje mi się, że kombinujesz na około. Jeżeli spójność danych w Method2 zależy od wywołania Method1, to ta metoda powinna być w niej wywołana. Jeżeli w Method1 musisz uważać, żeby w Method2 nie było problemów to coś tu jest bardzo nie tak. Wydaje mi się, że powinna to być jedna klasa, która będzie pilnować spójności danych, ale za mało dałeś, żeby coś stwierdzić

0
rumcajsik napisał(a):

W związku z czym pomyślałem sobie, że może w nadklasie BaseClass utworzyć listę statyczną, inicjalizować ją w Method1() i dodać rekordy, w Method2() również dodać rekordy, które jeszcze nie występują na liście i na końcu Method2() zmienić statusy - czy to najlepsze rozwiązanie??

Statyczne pola to prawie nigdy nie jest dobre rozwiązanie.
Ja bym raczej dodał w klasie Class1 listę, wypełnił ją w Method1, a potem tę listę przekazał do Class2 w konstruktorze, albo jako parametr do Method2 i tam operował dalej.

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