Je travaille avec des objets SqlConnection et AdomdConnection en C#. SqlConnection est construit à partir de: DbConnection, ICloneable.Est-il possible d'envelopper deux fonctions de classe similaires dans une classe en C#?
AdomdConnection est construit à partir de: Component, IDbConnection, IDisposable, ICloneable. J'espérais pouvoir utiliser une interface commune ou un type de classe pour passer, mais cela ne semble pas être une option parce qu'ils ne partagent pas un type commun, que je peux dire. Ils ont tous deux des méthodes similaires que j'ai besoin d'appeler mais comme je vais écrire une certaine logique autour de les appeler pour soit je voulais les envelopper dans leur propre classe, puis juste appeler cette classe et le laisser s'inquiéter du sous-jacent type.
Au départ, je pensais que je pouvais utiliser quelque chose comme ceci:
public class ConnectionWrapper
{
protected object _Conn;
public ConnectionWrapper(object Conn)
{
_Conn = Conn;
}
public void Open()
{
if(_Conn is SqlConnection) { ((SqlConnection)_Conn).Open(); }
else if(_Conn is AdomdConnection) { ((AdomdConnection)_Conn).Open(); }
}
}
Mais je ne peux pas empêcher de se demander qu'il n'y a pas une meilleure façon de le faire.
Je suis tombé sur la classe TypeMap (voir la question 298976) qui serait plus lisible, mais je n'arrivais pas à comprendre comment utiliser les valeurs de retour, mais je me demande encore s'il y a une meilleure façon pour le faire.
On dirait quelque chose que vous pouvez résoudre avec les génériques. – workmad3
Mais vous n'avez pas besoin car les deux classes de connexion implémentent déjà les mêmes interfaces. –