Γεια σας.
Έχω την παρακάτω υλοποίηση Singleton:
using System;
using System.Data.SqlClient;
namespace SqlServerLib
{
public sealed class Database
{
private static SqlConnection _connection;
private static string _connectionString;
static Database()
{
_connection = new SqlConnection(_connectionString);
}
// nested class
class DatabaseCreator
{
static DatabaseCreator() {}
internal static readonly Database instance = new Database();
}
public static Database Instance
{
get { return DatabaseCreator.instance; }
}
public (static) SqlConnection Connection
{
get { return _connection; }
}
public static string ConnectionString
{
set { _connectionString = value; }
}
}
}
*To (static) το έχω με παρενθέσεις στο property Connection - χάριν του παραδείγματος, υποδηλώνοντας ότι είναι μη απαραίτητο στην περίπτωση μου. Παρακάτω εξηγώ...
Ποιος είναι ο καλύτερος τρόπος να έχω access στο property Connection (σε περισσότερες της μίας κλάσης), ώστε να έχω το ίδιο Connection σε όλη την εφαρμογή; Πρέπει να φτιάχνω κάθε φορά instance του Database class με τη μορφή
Database db = Database.Instance;
sqlCommand = new SqlCommand(query, db.Connection);
χωρίς να είναι static το Connection; Ή να μη φτιάχνω καθόλου instance και να έχω access με τη μορφή
sqlCommand = Database.Connection;
Να σημειώσω ότι το property ConnectionString το χρησιμοποιώ μία φορά κατά την εκκίνηση της εφαρμογής. Οπότε με αυτό δεν έχω πρόβλημα.