creer interface pour singleton!
salut à tous , j'utilise spring.net et j ai un singleton de connexion en base de données je veux réaliser une interface pour ce singleton pour l'utiliser dans d'autre classe via IApplicationContext
mais le problème que je peux pas utiliser Instance comme une classe ConnexionDao qui possède ces fonctions !
Singleton connexion base:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
class ConnexionDao : IConnexion
{
private DbConnection m_SqlCnx = null;
private static ConnexionDao s_Instance;
private static object s_InstanceLocker = new object();
private ConnectionStringSettings m_CnxStringSettings;
public ConnectionStringSettings CnxStringSettings
{
get { return m_CnxStringSettings; }
set { m_CnxStringSettings = value; }
}
// Singleton
public static ConnexionDao Instance
{
get
{
lock (s_InstanceLocker)
{
if (s_Instance == null)
{
s_Instance = new ConnexionDao();
}
return s_Instance;
}
}
}
// Cette méthode créé une connexion à la BDD et la renvoit
public DbConnection GetSqlConnection()
{
DbProviderFactory factory =
DbProviderFactories.GetFactory(CnxStringSettings.ProviderName);
if (m_SqlCnx == null)
{
m_SqlCnx = factory.CreateConnection();
}
m_SqlCnx.ConnectionString = CnxStringSettings.ConnectionString;
if (m_SqlCnx.State == System.Data.ConnectionState.Closed)
{
m_SqlCnx.Open();
}
return m_SqlCnx;
}
public void CloseConnection()
{
if (this.m_SqlCnx != null)
{
if (this.m_SqlCnx.State != System.Data.ConnectionState.Closed)
{
this.m_SqlCnx.Close();
}
}
}
} |
interface IConnexion:
Code:
1 2 3 4 5 6 7 8 9
|
interface IConnexion
{
bool test_connex();
DbConnection GetSqlConnection();
ConnexionDao Instance() {}
void CloseConnection();
} |
la classe du test :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
private void Form1_Load(object sender, EventArgs e)
{
IConnexion ico = (IConnexion)ctx.GetObject("infconnx");
// l'erreur ici, l'IDE ne reconnais pas la fonction GetSqlConnection comme une fonction de la classe Instance
DbConnection cnx= ico.Instance.GetSqlConnection();
version_textBox.Text = cnx.ServerVersion;
} |