Ich habe die folgende Klasse, die ich verwende, um Code-Duplizierung zu minimieren, wenn oft unterschiedliche Datensätze aus einer Oracle-Datenbank aufgerufen werden. In erster Linie brauche ich Hilfe, um die Code-Duplizierung im überladenen Konstruktor zu entfernen, aber jeder andere Rat würde auch geschätzt werden.C# überladene Konstruktoren Problem
public class UniformData
{
private string connection = "My Connection String";
private OracleConnection con;
private OracleCommand com;
private OracleDataReader reader;
public UniformData(string sql)
{
con = new OracleConnection(connection);
con.Open();
com = new OracleCommand(sql, con);
}
public UniformData(string sql, List<SqlParameters> myParams)
{
con = new OracleConnection(connection);
con.Open();
com = new OracleCommand(sql, con);
foreach (SqlParameters Param in myParams)
{
com.Parameters.Add(Param.ParamName, Param.ParamValue);
}
}
public OracleDataReader GetReader()
{
reader = com.ExecuteReader();
return reader;
}
~UniformData()
{
con.Close();
con.Dispose();
com.Dispose();
reader.Close();
reader.Dispose();
}
}
Sie sollten nicht einen Finalizer für diese Klasse haben. Finalizer dienen zur Bereinigung von * nicht verwalteten * Ressourcen, nicht zur Entsorgung verwalteter Ressourcen. Sie sollten 'IDisposable' implementieren und die zusammengesetzten Objekte in der' Dispose'-Methode entsorgen und keinen Finalizer haben. – Servy