public class DbFactory where T : IDbConnection where V : IDbCommand { public static DbFactory Create(string connectionString) { DbFactory db = new DbFactory(); db._connection = Activator.CreateInstance(); db._connection.ConnectionString = connectionString; db._commandFactory.DbFactory = db; return db; } private DbCommandFactory _commandFactory; private IDbConnection _connection; public IDbConnection Connection { get { return _connection; } set { _connection = value; } } public DbCommandFactory CommandFactory { get { return _commandFactory; } } internal DbFactory() { _commandFactory = new DbCommandFactory(); } }