Я не очень знаком с рефакторингом, но мне кажется, что мне нужно внести некоторые изменения в этот код ...У меня есть 4 кнопки в моем приложении.Каждый из них вызывает метод, который получает данные из онлайн-XML и использует эти данные для заполнения списка.
Я повторял код для всех этих методов, хотя иногда вижу, что они различаются.Вот небольшое объяснение моей логики:
Кнопки btnA_Click и btnB_Click получают те же данные, но с разных лет.То же самое касается других 2 кнопок.Они получают те же данные (не такие, как btnA и btnB), но и из разных лет.
Кнопки:
private void btnA_Click(object sender, RoutedEventArgs e)
{
string webService = @"xml from the web";
table.OpenReadAsync(new Uri(webService));
btnA.IsEnabled = false;
btnB.IsEnabled = false;
progressBar1.Visibility = System.Windows.Visibility.Visible;
}
private void btnB_Click(object sender, RoutedEventArgs e)
{
string webService = @"xml from the net";
table.OpenReadAsync(new Uri(webService));
btnA.IsEnabled = false;
btnB.IsEnabled = false;
progressBar1.Visibility = System.Windows.Visibility.Visible;
}
private void btnSTA_Click(object sender, RoutedEventArgs e)
{
string webService = @"xml from the web;
stats.OpenReadAsync(new Uri(webService));
btnSTA.IsEnabled = false;
btnSTB.IsEnabled = false;
progressBar3.Visibility = System.Windows.Visibility.Visible;
}
private void btnSTB_Click(object sender, RoutedEventArgs e)
{
string webService = @"xml from the web;
stats.OpenReadAsync(new Uri(webService));
btnSTA.IsEnabled = false;
btnSTB.IsEnabled = false;
progressBar3.Visibility = System.Windows.Visibility.Visible;
}
Методы:
void table_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
if (e.Error == null && !e.Cancelled)
{
XElement xml = XElement.Load(e.Result);
var table = LINQ Statement...
listBox1.ItemsSource = table;
btnClassificacaoSerieA.IsEnabled = true;
btnClassificacaoSerieB.IsEnabled = true;
progressBar1.Visibility = System.Windows.Visibility.Collapsed;
}
}
void stats_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
if (e.Error == null && !e.Cancelled)
{
XElement xml = XElement.Load(e.Result);
var stats = LINQ Statement...
listBox3.ItemsSource = stats;
btnSTA.IsEnabled = true;
btnSTB.IsEnabled = true;
progressBar3.Visibility = System.Windows.Visibility.Collapsed;
}
}
Я немного растерялся здесь.Что я мог сделать, чтобы сделать этот код более объектно-ориентированным?Thx!