Ho una semplice domanda C# (quindi credo). Sono un principiante con la lingua e mi sono imbattuto in un problema riguardante le interfacce e le classi che li implementano. Il problema èMetodo di classe che non è nell'interfaccia
ho l'interfaccia iA
interface iA
{
bool method1
bool method2
bool method3
}
e 3 classi che implementano l'interfaccia: classe B
, C
e D
class B : iA
{
public bool method1
public bool method2
public bool method3
}
se la classe B aveva un altro metodo che non è in l'interfaccia, diciamo method4()
e ho il seguente:
iA element = new B();
e quindi vorrei usare:
element.method4();
avrei ricevuto un errore che dice che io non ho un method4()
che prende un primo argomento di tipo iA
.
La domanda è: Posso avere un oggetto di tipo interfaccia e istanziato con una classe e chiedere a quell'oggetto di chiamare un metodo dalla classe, un metodo che non è nell'interfaccia?
Una soluzione che ho avuto è stata quella di utilizzare una classe astratta tra l'interfaccia e le classi derivate, ma IMO che avrebbe messo l'interfaccia fuori dal campo di applicazione. Nel mio design vorrei utilizzare solo l'interfaccia e le classi derivate.
'if (elemento è typeof (B)) ((B) element) .method4();' questo dovrebbe aiutare – wudzik
Un nuovo utente che chiede una domanda chiara e ben formattata. Questo è raro, congratulazioni e benvenuto. :) – Otiel
Buona domanda. +1 Se offri lo scenario reale, possiamo consigliarti sul miglior approccio al design. –