J'ai ce code répété ci-dessous et je suppose que cela peut être consolidée mais si vous remarquez chaque dictionnaire est différent dictionnaire générique:Comment rendre ce code répété plus élégant?
dictionary1 est de type
Dictionary<int, ContinuousIntegrationSolution>
alors dictionary2 est de type:
Dictionary<int, BugTracker>
DataTable dt = GetDataTable("CI");
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow dr = dt.Rows[i];
int id = Convert.ToInt32(dr["id"]);
string name = dr["name"].ToString();
_dictionary1[id] = new ContinuousIntegrationSolution(){Name = name};
}
DataTable dt1 = GetDataTable("Bug_Tracking");
for (int i = 0; i < dt1.Rows.Count; i++)
{
DataRow dr = dt1.Rows[i];
int id = Convert.ToInt32(dr["id"]);
string name = dr["name"].ToString();
_dictionary2[id] = new BugTracker() { Name = name };
}
DataTable dt2 = GetDataTable("SDLC");
for (int i = 0; i < dt2.Rows.Count; i++)
{
DataRow dr = dt2.Rows[i];
int id = Convert.ToInt32(dr["id"]);
string name = dr["name"].ToString();
_dictionary3[id] = new SDLCProcess() { Name = name };
}
NOTE: Je fixe les quelques fautes de frappe qui ont été mentionnés ci-dessous.
Y at-il un bug dans votre code? Vous avez 3 DataTables (dt, dt1 et dt2), mais seulement 2 Dictionnaires _dictionary1 et _dictionary2? –
Sommes-nous autorisés à modifier la hiérarchie de classe afin que ContinuousIntegrationSolution, BugTracker et SDLCProcess aient une classe de base commune ou une interface contenant le membre Name? –
De plus, dt n'est pas défini dans la portée de l'extrait. –