Привет, я делаю задание по полиморфизму на одном из онлайн-курсов и все бы хорошо но упёрся лбом в проблему (как мне кажется синтаксиса) как вытащить из объекта унаследованные методы в данной ситуации:
public class DbCommand
{
public DbCommand(object DbConnection)
{
Console.WriteLine("Db_COMMAND is online...\n");
if (DbConnection is null)
{
throw new ArgumentNullException(nameof(DbConnection));
}
}
public void Executerrr()
{
/*
Here must be an object that should "discover" methods OpenConnection() and CloseConnection()
but I cannot figure out what kind of object should I put inside Execute() method...
*/
}
}
public abstract class DbConnection
{
public string _ConnectionString { get; set; }
public TimeSpan Timeout { get; set; }
public DbConnection(string connectionString)
{
_ConnectionString = connectionString;
}
public abstract void OpenConnection();
public abstract void CloseConnection();
}
public class SqlConnection : DbConnection
{
public SqlConnection(string connectionString) : base(connectionString)
{
}
public override void CloseConnection()
{
Console.WriteLine("SQL connenction Closed");
}
public override void OpenConnection()
{
Console.WriteLine("SQL connenction OPEN");
}
}
public class OracleConnection : DbConnection
{
public OracleConnection(string connectionString) : base(connectionString)
{
}
public override void CloseConnection()
{
Console.WriteLine("ORACLE connenction Closed");
}
public override void OpenConnection()
{
Console.WriteLine("ORACLE connenction OPEN");
}
}
static void Main(string[] args)
{
// simple example:
var SQLconn = new SqlConnection("sql ready");
var ORACLEconn = new OracleConnection("oracle ready");
SQLconn.OpenConnection();
SQLconn.CloseConnection();
ORACLEconn.OpenConnection(); // works fine
ORACLEconn.CloseConnection(); // works fine
// here's a more complicated example
var start = new DbCommand(new OracleConnection("oracle ready"));
start.Executerrr();
}
Мне нужно чтобы если я даю объект класса OracleConnection - при запуске метода
Executerrr(
) выполнялись методы именно для OracleConnection и, соответственно, если SqlConenction - выводились фразы для Sql. Просто
object DbConnection
не видит абстрактные методы (а по моим расчётам как бы вроде должен )))).
Спасибо!