using System.Collections.Generic;
namespace DatabaseConnectionExample
public class PostgreSQLDB
Console.WriteLine("Connecting to PostgreSQL database");
public class SQLiteDatabase
Console.WriteLine("Connecting to SQLite database");
public class MSSQLServerDB
throw new Exception("Cannot connect to MSSQL Server");
public static void ConnectToMSSQLServerDatabase(MSSQLServerDB db)
Console.WriteLine($"Successfully connected to {db.GetType().Name}\n");
Console.WriteLine($"Error connecting to database: {ex.Message}\n");
public static void ConnectToPostgreSQLDatabase(PostgreSQLDB db)
Console.WriteLine($"Successfully connected to {db.GetType().Name}\n");
Console.WriteLine($"Error connecting to database: {ex.Message}\n");
public static void ConnectToSQLiteDatabase(SQLiteDatabase db)
Console.WriteLine($"Successfully connected to {db.GetType().Name}\n");
Console.WriteLine($"Error connecting to database: {ex.Message}\n");
static void Main(string[] args)
List<object> databases = new List<object>()
{new PostgreSQLDB(), new SQLiteDatabase(), new MSSQLServerDB()};
foreach (var db in databases)
ConnectToPostgreSQLDatabase((PostgreSQLDB)db);
else if (db is SQLiteDatabase)
ConnectToSQLiteDatabase((SQLiteDatabase)db);
else if (db is MSSQLServerDB)
ConnectToMSSQLServerDatabase((MSSQLServerDB)db);