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