Wpis z mikrobloga

#csharp

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.
  • 37
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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.

interface X
{
int MyProperty { get; set;
  • Odpowiedz
@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.
  • Odpowiedz
To jak to inaczej zaprojektować?


@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?
  • Odpowiedz
@meetom: Jakbym chciał zastosować interfejsy? Wyglądałoby to tak że miałbym interfejs iConfig w którym deklaruje void CurrentRole();

Czy mogę się odwołać do jakiejś metody w klasie po której sie nie dziedziczy?
  • Odpowiedz
@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..
  • Odpowiedz