I did the exercise about Polymorphism: Third Pillar of Opp. I thought I could post here the solution. If you have done something different or have something to correct me, please do. I’ll be more than happy. I’m using C# 10 - Visual Studio 2022
MAIN:
using DATABase_Connection_Origin;
var sqlConnection = new SqlConnection(“Connection to SQL”);
var oracleConnection = new OracleConnection(“Connection to Oracle”);
Console.WriteLine($“SQL Connection string: {sqlConnection.ConnectionString}”);
Console.WriteLine($“Oracle Connection string: {oracleConnection.ConnectionString}\n”);
sqlConnection.OpenConnection();
oracleConnection.OpenConnection();
Console.WriteLine(“\nDOING SOME WORK!!!\n”);
sqlConnection.CloseConnection();
oracleConnection.CloseConnection();
//TESTING DbCommand_TESTING DbCommand_TESTING DbCommand_TESTING DbCommand_TESTING DbCommand_
Console.WriteLine();
var dbCommandSql = new DbCommand(sqlConnection, “Total sum of values in the data base”);
dbCommandSql.Execute();
var dbCommandOracle = new DbCommand(oracleConnection, “Total product of values in the data base.”);
dbCommandOracle.Execute();
DBCONNECTION CLASS:
public abstract class DbConnection
{
public TimeSpan TimeOut { get; private set; }
public readonly string ConnectionString;
public DbConnection(string connectionString)
{
if (String.IsNullOrEmpty(connectionString))
{
throw new InvalidOperationException("Null or Empty string cannot be used as connection string.");
}
else
ConnectionString = connectionString;
}
public abstract void OpenConnection();
public abstract void CloseConnection();
}
DB COMMAND CLASS:
public class DbCommand
{
private DbConnection _dbConnection;
string _instruction;
public DbCommand(DbConnection dbConnection, string instruction)
{
if (dbConnection == null)
{
throw new InvalidOperationException("dbConnection cannot be null.");
}
else
_dbConnection = dbConnection;
if (String.IsNullOrEmpty(instruction))
{
throw new InvalidOperationException("Overload parameter instructio cannot be empty or null.");
}
else
_instruction = instruction;
}
public void Execute()
{
_dbConnection.OpenConnection();
Console.WriteLine(_instruction);
_dbConnection.CloseConnection();
}
}
SQLCONNECTION CLASS:
public class SqlConnection : DbConnection
{
private readonly string _connectionString;
public SqlConnection(string connectionString) : base(connectionString)
{
if (String.IsNullOrEmpty(connectionString))
{
throw new InvalidOperationException(“Null or Empty string cannot be used as connection string.”);
}
else
_connectionString = connectionString;
}
public override void OpenConnection()
{
Console.WriteLine("Open a SQL SERVER Connection.");
}
public override void CloseConnection()
{
Console.WriteLine("Close a SQL SERVER Connection.");
}
}
ORACLECONNECTION CLASS:
private readonly string _oracleConnection;
public OracleConnection(string connectionString) : base (connectionString)
{
if (String.IsNullOrEmpty(connectionString))
throw new InvalidOperationException("Null or Empty string cannot be used as connection string.");
else
_oracleConnection = connectionString;
}
public override void OpenConnection()
{
Console.WriteLine("Open a Oracle SERVER Connection");
}
public override void CloseConnection()
{
Console.WriteLine("Close a Oracle SERVER Connection");
}
}