Interfaccia che implementa sub con firme variabili

martedì 15 gennaio 2008 - 15.20

Teech Profilo | Expert

Salve a tutti...
Ho creato una interfaccia semplice:

Interface IMiaInterfaccia Sub MiaSub() End Interface
Nelle diverse classi che implementano l'interfaccia la Sub MiaSub potrebbe avere firme diverse:

Public Class ClasseA Implements IMiaInterfaccia Sub MiaInterfaccia(ByVal iVar AS Integer) Implements IMiaInterfaccia.MiaSub ... End Sub End Class Public Class ClasseB Implements IMiaInterfaccia Sub MiaInterfaccia(ByVal sVar1 AS String, sVar2 AS String) Implements IMiaInterfaccia.MiaSub ... End Sub End Class

Ovviamente così non funziona...
Come posso fare?

Grazie dell'aiuto
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

alx_81 Profilo | Guru

>Salve a tutti...
Ciao!

>Ho creato una interfaccia semplice:
>
>Interface IMiaInterfaccia
> Sub MiaSub()
>End Interface
>Nelle diverse classi che implementano l'interfaccia la Sub MiaSub
>potrebbe avere firme diverse:
>Ovviamente così non funziona...
>Come posso fare?
Sinceramente non trovo applicazioni per un'interfaccia in un esempio di questo tipo.
Personalmente vedo solo overload dei metodi..

>
>Grazie dell'aiuto
di nulla!
Alx81 =)

http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

Teech Profilo | Expert

In che senso un Overload di metodi? L'implementazione di MiaSub è su 2 classi diverse non in relazione di ereditarietà?
Dici che è meglio usare una classe astratta dalla quale ereditare?
La mia interfaccia reale è un pò più complessa, ma gestire una classe astratta forse può essere la soluzione...

In che casi usereste una classe astratta al posto di una interfaccia o viceversa?

Ciao!!!

Grazie!!!
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

alx_81 Profilo | Guru

>In che senso un Overload di metodi? L'implementazione di MiaSub
>è su 2 classi diverse non in relazione di ereditarietà?
>Dici che è meglio usare una classe astratta dalla quale ereditare?
>La mia interfaccia reale è un pò più complessa, ma gestire una
>classe astratta forse può essere la soluzione...
>
>In che casi usereste una classe astratta al posto di una interfaccia o viceversa?
Nel tuo caso farei una classe base con all'interno definiti i metodi in overload (quindi con lo stesso nome e più firme).
L'interfaccia la uso se devo definire tipi più fissi, quindi "obbligo" le mie classi ad implementare quella struttura fissa.
Per quello non trovo corretto l'utilizzo dell'interfaccia nel tuo esempio .
>
>Ciao!!!
>
>Grazie!!!
di nulla!
Alx81 =)

http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

Teech Profilo | Expert

Facendo un esempio più specifico:

Ho un'interfaccia
Interface ITabella Sub Find() Funtion Insert() As Boolean Function Update() As Boolean Function Delete() As Boolean End Interface
e voglio implementare l'interfaccia su tante classi diverse dove nella Sub Insert vorrei passare tutti i valori dei campi in chiave primaria delle tabelle che gestisco non è un semplice Overload...

Allo stesso tempo però vorrei essere sicuro che le mie classi gestiscono i metodi elencati nell'interfaccia...
Questo non è possibile farlo?

Ho provato con una classe astratta ma ricado nello stesso identico problema...

Grazie tante e scusami se sono insistente ma mi piace capire bene e ne approfitto della tua disponibilità...
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

alx_81 Profilo | Guru

>Facendo un esempio più specifico:
>
>Ho un'interfaccia
>Interface ITabella
> Sub Find()
> Funtion Insert() As Boolean
> Function Update() As Boolean
> Function Delete() As Boolean
>End Interface
>e voglio implementare l'interfaccia su tante classi diverse dove
>nella Sub Insert vorrei passare tutti i valori dei campi in chiave
>primaria delle tabelle che gestisco non è un semplice Overload...
>
>Allo stesso tempo però vorrei essere sicuro che le mie classi
>gestiscono i metodi elencati nell'interfaccia...
>Questo non è possibile farlo?
>
>Ho provato con una classe astratta ma ricado nello stesso identico
>problema...
Avevo capito bene allora.. eh no.. l'interfaccia la usi per definire tipi diciamo "fissi". Ci sarebbe una cosa mica troppo bella.. ovvero fare un array di parametri e utilizzarlo come argomento dei tuoi metodi..
>
>Grazie tante e scusami se sono insistente ma mi piace capire
>bene e ne approfitto della tua disponibilità...
figurati, per quanto possibile per le mie competenze, cerco di darti una mano, è un piacere
>--------------
>Maurizio Brini
>--------------
>Nessuna impresa è mai stata compiuta da un uomo ragionevole

Alx81 =)

http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

Teech Profilo | Expert

Ho risolto il mio problema togliendo l'interfaccia... eh eh
Effettivamente di solito le uso per dei tipi, più che "fissi" direi "uguali"... Mi ero perso sul fatto che le interfacce fossero delle firme per le classi, ma non è propriamente così...

Grazie!!!
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5