Bonjour,
je souhaiterais savoir si mon id=E9e est r=E9alisable.
Dans une classe destin=E9e =E0 l'appel de proc=E9dure stock=E9e sur une
base oracle, j'ai une propri=E9t=E9 qui me retourne un objet non typ=E9
qui est soit une OracleConnection, soit une OdbcConnection.
Mon pb vient lors de ma tentative d'appel de la methode open sur
l'objet obtenu par la propri=E9t=E9 dans la mesure o=F9 il n'est pas
cast=E9. Bien evidemment, je prend le message suivant en erreur :
"object' does not contain a definition for 'Open'"
Par contre :
((OdbcConnection)this.Instance).Open();
ou
((OracleConnection)this.Instance).Open();
fonctionne parfaitement. L'ennui c'est que je vais devoir cast=E9 pour
chaque appel de methode =E0 mon instance et faire de la redondance de
code.
Je voudrais eviter de devoir coder 2 fois les methodes en castant une
fois en OracleConnection et une autre fois en Odbc, le tout dans la mm
classe.
Est-ce possible ?
Merci de votre aide.
=3DSource Code=3D
public object Instance
{
get{return _IsOdbc?new OdbcConnection(_ConnectionString):new
OracleConnection(_ConnectionString);}}
public bool TestConnection()
{
[...]
Instance.Open(); <=3D Pb si non cast=E9.
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Ambassadeur Kosh
> je souhaiterais savoir si mon idée est réalisable.
DBConnection contient une methode Open(). comme elle est base de OdbcConnection et de OracleConnection, je vois pas trop le sens de la question
chaque appel de methode à mon instance et faire de la redondance de code.
une façon agréable de résoudre le probleme, c'est un wrapper.
tu as une classe qui "emballe" ta connection, qui implante les memes interfaces (trivizl à faire), et qui fourni les methodes en plus. comme ça, c'est utilisable partout sans effort.
> je souhaiterais savoir si mon idée est réalisable.
DBConnection contient une methode Open(). comme elle est base de
OdbcConnection et de OracleConnection, je vois pas trop le sens de la
question
chaque appel de methode à mon instance et faire de la redondance de
code.
une façon agréable de résoudre le probleme, c'est un wrapper.
tu as une classe qui "emballe" ta connection, qui implante les memes
interfaces (trivizl à faire), et qui fourni les methodes en plus. comme ça,
c'est utilisable partout sans effort.
> je souhaiterais savoir si mon idée est réalisable.
DBConnection contient une methode Open(). comme elle est base de OdbcConnection et de OracleConnection, je vois pas trop le sens de la question
chaque appel de methode à mon instance et faire de la redondance de code.
une façon agréable de résoudre le probleme, c'est un wrapper.
tu as une classe qui "emballe" ta connection, qui implante les memes interfaces (trivizl à faire), et qui fourni les methodes en plus. comme ça, c'est utilisable partout sans effort.
adebaene
Franck wrote:
Bonjour, je souhaiterais savoir si mon idée est réalisable.
Dans une classe destinée à l'appel de procédure stockée sur une base oracle, j'ai une propriété qui me retourne un objet non typé qui est soit une OracleConnection, soit une OdbcConnection.
Tu n'as qu'à typer cette propriété en IDbConnection, l'interface commune à toutes les connections, et qui définit la méthode Open. C'est à çà que serve les interfaces et les classes de base!
Arnaud MVP - VC
Franck wrote:
Bonjour,
je souhaiterais savoir si mon idée est réalisable.
Dans une classe destinée à l'appel de procédure stockée sur une
base oracle, j'ai une propriété qui me retourne un objet non typé
qui est soit une OracleConnection, soit une OdbcConnection.
Tu n'as qu'à typer cette propriété en IDbConnection, l'interface
commune à toutes les connections, et qui définit la méthode Open.
C'est à çà que serve les interfaces et les classes de base!
Bonjour, je souhaiterais savoir si mon idée est réalisable.
Dans une classe destinée à l'appel de procédure stockée sur une base oracle, j'ai une propriété qui me retourne un objet non typé qui est soit une OracleConnection, soit une OdbcConnection.
Tu n'as qu'à typer cette propriété en IDbConnection, l'interface commune à toutes les connections, et qui définit la méthode Open. C'est à çà que serve les interfaces et les classes de base!