Jump to content
MadMike99

C# Korzystanie ze zmiennych z innej klasy.

Recommended Posts

Witam.

Mój problem polega na tym, że nie wiem jak pobrać wartość zmiennej z klasy pierwszej do klasy drugiej zaznaczając, że ta zmienna zmienia się co jakiś czas w klasie pierwszej. Korzystałem na razie z:

Klasa 1


public static int c = DateTime.Now.Minute;

Klasa 2:


private int minuta = Form2.c;

Wydaje mi się, że z tego powodu wpisu "static" wartość zmiennej w klasie 2 jest ciągle taka sama, a musi zmieniać się wraz ze skokiem minutowym.

Link to comment
Share on other sites

Udostępnij wartość zmiennej poprzez właściwość. Np:

public int C
{
get
{
return c;
}
}

Jeśli chcesz zmieniać wartość c co minutę, użyj klasy Timer. Gotowy kawałek kodu np tu: KLIK

[edit]

Dodałem get - pamiętałem i się zgapiłem. Dzięki, webtom.

Nie proponowałem innego podejścia, bo nie wiem, co dokładnie autor zamierza. Z tego powodu też zalinkowałem do stackoverflow.

Edited by wies.niak
Link to comment
Share on other sites

Udostępnij wartość zmiennej poprzez właściwość. Np:

public int C
{
{
return c;
}
}

Brakuje słówka kluczowego get, no i tak czy siak będzie za każdym razem zwracać tę samą wartość. Coś takiego powinno działać:
public /*static*/ int C { get { return DateTime.Now.Minute; } }

Link to comment
Share on other sites

Dzięki. O to chodziło! W skrócie wyjaśnię, że robię zegarek który czyta godzinę z krokiem ustawionym przez użytkownika (wybierany w comboboxie). Wcześniej odczytywał ten sam czas od momentu zapisania ustawień, jednak po poprawieniu dwóch linijek tak jak napisaliście wszystko działa jak należy. Program prosty, dwie formy, w pierwszej sam zegar cyfrowy, w drugiej ustawienie kroku z przyciskiem do zapisania ustawień. Żadnego wpisywania danych przez użytkownika. Zadam jeszcze jedno pytanie, macie pomysł na jakieś zabezpieczenia do tego programu (oprócz modyfikatorów dostępu)?

Link to comment
Share on other sites

Trochę trudny temat, bo istotą .NETa jest kod pośredni, więc dekompilacja aplikacji jest dziecinne prosta. W zasadzie jedyna sensowna opcja to komercyjne obfuskatory, które porządnie zaszumią kod i utrudnią jego analizę. W sumie to jest zabawna sprawa, bo istnieje w .NET atrybut, który można nadać assembly by był "niedekompilowalny" i np .NET Reflector go respektuje. Natomiast wystarczy wziąć darmowego IL Spy i te pseudo zabezpieczenie jest całkowicie ignorowane ;] Parę razy spotkałem się z bibliotekami, które miały metody nazwane znakami unicode'owymi, nieczytelnymi dla człowieka, przy których niektóre aplikacje do deasemblacji się wywalały.

Napisałem o komercyjnych obfuskatorach ponieważ istnieje pokaźny zbór aplikacji, które ogarniają wiele aplikacji obfuskujących i potrafią w pewnej mierze odwrócić ich działanie.

I na koniec dodam, że Twoja własna aplikacja robi Ci pod górkę w tym temacie, ponieważ jest bardzo prosta, więc nie ważne jakby ją zaszumić, analiza tych kilku linijek kodu nie sprawi nikomu problemu.

Podsumowując: skupiłbym się na funkcjonalności, a nie na zabezpieczeniach. W (prawie) końcu w każdej licencji stoi jak byk "nie modyfikuj aplikacji, nie ponosimy odpowiedzialności za nic, co aplikacja może wybuchnąć - instalujesz na własną odpowiedzialność" ;]

Edited by wies.niak
Link to comment
Share on other sites

@wies.niak

Chyba nie chodzi o obfuskację tylko ochronę przed atakami w stylu buffer overflow, SQLi itd. (oczywiście w tym kodzie SQLa się nie spodziewam ale wiesz o co chodzi).

@OP

Oczywiście nie widząc kodu nie można ocenić jego bezpieczeństwa, możesz go tutaj wrzucić i razem go przeczytamy, chociaż jeśli chodzi o naukę tego typu rzeczy to C# jest słabym wyborem, dużo lepiej być dużo bliżej pamięci i widzieć co się dzieje (czyli pewnie okolice C czy asm).

Ogólnie jeżeli chcesz zabezpieczyć swoją aplikację to trzeba wymyślić sposób w jaki adwersarz może coś napsuć i mu to uniemożliwić.

niby po co logować się i szyfrować hasło do zwykłego zegarka?

A po co haksor ma zmieniać wyświetlaną godzinę? tongue_prosty.gif

Edited by Hakken
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...