Mam pytanie. Chce zrobić zmienną boolowską która będzie przechowywała informacje do której miałbyby dostęp wszystkie klasy. Jak to zrobić? Jako że nie ma dziedziczenia wielokrotnego w c# to poczytałem o interfejsach. Ale w nich można robić metody a nie zmienne.
@MlodyInformatyk: a po co Ci wielokrotne dziedziczenie? przeciez jak klasa A dziedziczy z jakiejs klasy B, ktora dziedziczy z innej klasy C, to posrednio klasa A dziedziczy z C
@MlodyInformatyk: a dokladniej co chcesz osiagnac? Opcji jest wiele - pewnie wcale nie potrzebujesz "globalnej" zmiennej. Ale jezeli jednak to: klasa statyczna np? w VS kodzisz?
@MlodyInformatyk: pomijajac już sam fakt że prawdopodobnie próbujesz zrobić coś szalonego (może opowiedz więcej o Twoim problemie tak btw), to w inrefrejsie możesz miec pole (propercje tak własiciwe) i potem implemenotwać ja wewnątrz każdej klasy która implementuje ten interfejs.
@MlodyInformatyk: Jeśli potrzebujesz globalnej zmiennej, to prawdopodobnie powinieneś wymyślić inny sposób na to.
Twoim rozwiązaniem jest stworzenie publicznego statycznego obiektu konfiguracyjnego, do którego będziesz się odwoływać w całym projekcie. W środku powinieneś mieć prywatną statyczną zmienną bool i publiczne statyczne property z lockami w gecie i secie.
Ale mógłbyś ten sam obiekt niestatyczny wstrzykiwać przez konstruktor wszędzie tam, gdzie potrzebujesz.
@MlodyInformatyk: eee, no jak masz dwa rodzaje użytkowników - to możesz albo po klasie odróżniać - albo dodac metode isAdmin która zwraca false dla usera i true dla admina?
@MlodyInformatyk: to moze lepiej zrob pole Role, i w nim wartosci admin albo user i potem sprawdzaj np. user.getRole()=="admin" ( oczywiscie da sie to ladniej zrobic :) )
@edgar_k: @MintajWKwadracie: No ok to jeszcze dopisze że mam rozne okna i jesli uzytkownik jest userem to po kliknieciu w "panel administratora" pokazuje komunikat "nie masz uprawnien"
Tak wiec kazde okno musialoby dziedziczyc zarowno po Forms jak i klasie user?
@MlodyInformatyk: no to jak klikniesz w panel administratora to niech bedzie jakis if(getRole=="admin") -> pokaz panel , else "nie masz uprawnien" ; hm no ale po co okno ma dziedziczyc po klasie user?
@MlodyInformatyk: równie dobrze mozesz zrobić jakąś statyczną klase gdzieś "obok" i tam statyczne pole i je ustawiać w zalenosci od usera i sprawdzac gdzie chcesz...
@MlodyInformatyk: Możesz interfejs. Nie wiem po co, ale możesz. Jak dla mnie to obecna rola powinna być w jednym miejscu w danym wystąpieniu aplikacji. Jak to będzie interfejs, to każda instancja klasy, która go implementuje będzie mieć tę informację (bo nie ma czegoś takiego jak statyczny interfejs) więc ta sama informacja będzie rozsiana w różnych miejscach. Czy Ty chcesz, żeby każda formatka implementowała ten interfejs? Bo nie wiem czy nadążam..
Mam pytanie. Chce zrobić zmienną boolowską która będzie przechowywała informacje do której miałbyby dostęp wszystkie klasy. Jak to zrobić? Jako że nie ma dziedziczenia wielokrotnego w c# to poczytałem o interfejsach. Ale w nich można robić metody a nie zmienne.
interface X
{
int MyProperty { get; set;
Twoim rozwiązaniem jest stworzenie publicznego statycznego obiektu konfiguracyjnego, do którego będziesz się odwoływać w całym projekcie. W środku powinieneś mieć prywatną statyczną zmienną bool i publiczne statyczne property z lockami w gecie i secie.
Ale mógłbyś ten sam obiekt niestatyczny wstrzykiwać przez konstruktor wszędzie tam, gdzie potrzebujesz.
@MintajWKwadracie: Bo to jest aplikacja okienkowa i oprócz własnych klas musi do dziedziczyć po Forms.
@edgar_k: To jak
@MlodyInformatyk: eee, no jak masz dwa rodzaje użytkowników - to możesz albo po klasie odróżniać - albo dodac metode isAdmin która zwraca false dla usera i true dla admina?
Tak wiec kazde okno musialoby dziedziczyc zarowno po Forms jak i klasie user?
hm no ale po co okno ma dziedziczyc po klasie user?
Przykładowo:
public enumCzy mogę się odwołać do jakiejś metody w klasie po której sie nie dziedziczy?
@MlodyInformatyk: brawo, logike wiązać z widokiem...
Czy Ty chcesz, żeby każda formatka implementowała ten interfejs? Bo nie wiem czy nadążam..