Creare un metodo in sostituzione di tanti metodi simili

di il
2 risposte

Creare un metodo in sostituzione di tanti metodi simili

Salve a tutti,

Ho una decina di metodi del tutto simili fatti in questo modo:

public DataTable GetModulesList()
{
DataSet ds = null;
if (_dbConnectionString == null || _dbConnectionString.Length == 0)
_dbConnectionString = ConfigurationManager.ConnectionStrings["AriannaConnectionString"].ToString();

bool localConnection = false;

try
{
if (_dbProvider == AvailableDataProviders.None)
{
_dbProvider = (AvailableDataProviders)DecodeProvider(ConfigurationManager.AppSettings["DbProvider"]);
if (_dbProvider == AvailableDataProviders.None) throw new ApplicationException();
}

if (_dbConnection == null)
{
_dbConnection = FactoryConnect.CreateConnection(_dbProvider);
_dbConnection.Open(_dbConnectionString);
localConnection = true;
}

IProfiling dalProfile = ProfileFactory.CreateProfiling(_dbProvider, _dbConnection, _errHandler);
if (dalProfile == null) throw new ApplicationException();


ds = dalProfile.GetModulesList();

}
catch (Exception)
{

}
finally
{
if (_dbConnection != null)
{
if (localConnection)
{
_dbConnection.Close();
_dbConnection.Dispose();
}
}
}

return (ds != null && ds.Tables.Count != 0) ? ds.Tables[0] : null;
}

In questi metodi l'unica cosa che cambia l'ho sottolineata e messa in grassetto (tutti metodi senza parametri che restituiscono lo stesso tipo di dato). Come posso operare per evitare in maniera elegante in questi metodi il ripetersi di istruzioni tutte uguali tra loro?
Ho provato con i delegates ma mi sono fermato in quanto la classe cui appartiene il metodo richiamato viene creata dentro .
Giampaolo

2 Risposte

  • Re: Creare un metodo in sostituzione di tanti metodi simili

    Ciao esistono diverse cose che puoi fare, per esempio
    mettere il comando ds = dalProfile.GetModulesList(); dentro uno switch in modo da inserire le altre metodologie di restituzione dataset e, in public DataTable GetModulesList() dichiarare un parametro da passare per veicolare lo switch.
  • Re: Creare un metodo in sostituzione di tanti metodi simili

    Io di solito quando mi capita di dover rifatorizzare codice una funzione di quel genere la farei parametrica girando come parametro proprio la Getlist.
    Sono un nemico giurato del copia ed incolla nel codice.
Devi accedere o registrarti per scrivere nel forum
2 risposte