Mam proste pytanie C# (tak wierzę). Jestem początkującym językiem i natknąłem się na problem dotyczący interfejsów i klas, które je implementują. Problemem jestMetoda klasy, która nie jest w interfejsie
mam interfejsu iA
interface iA
{
bool method1
bool method2
bool method3
}
i 3 klasy, które implementują interfejs: Klasa B
, C
i D
class B : iA
{
public bool method1
public bool method2
public bool method3
}
jeśli klasa B miał inną metodę, która nie jest w interfejs, powiedzmy, method4()
i mam następujące:
iA element = new B();
a następnie chciałbym używać:
element.method4();
bym się błąd mówiąc, że nie mają method4()
że trwa pierwszy argument typu iA
.
Pytanie brzmi: Czy mogę mieć obiekt typu interfejsu i utworzyć instancję z klasą i czy ten obiekt wywołuje metodę z klasy, czyli metodę, której nie ma w interfejsie?
Rozwiązaniem, które wymyśliłem, było użycie klasy abstrakcyjnej między interfejsem a klasami pochodnymi, ale IMO, które wykluczyłoby interfejs poza zasięgiem. W moim projekcie chciałbym użyć tylko interfejsu i klas pochodnych.
'if (element to typeof (B)) ((B) element) .method4();' to powinno pomóc – wudzik
Świeżemu nowemu użytkownikowi zadając jasne i dobrze sformatowane pytanie. To rzadkie, gratulacje i mile widziane. :) – Otiel
Dobre pytanie. +1 Jeśli podasz prawdziwy scenariusz, możemy doradzić w kwestii najlepszego podejścia do projektu. –