Golden Basim Ответов: 2

Как вызвать класс из списка, который заполнен именем класса


если у меня много занятий и я называю их так :
try { SplashScreenManager.Default.SetWaitFormDescription(string.Format(strings.APPLY_CONTENT_IMPROVEMENTS, " (6.0.3.0) ")); } catch { }
              MrUpdates.V6.v6030_c();
              try { SplashScreenManager.Default.SetWaitFormDescription(string.Format(strings.APPLY_CONTENT_IMPROVEMENTS, " (6.1.0.0) ")); } catch { }
              MrUpdates.V6.v6100_c();
              try { SplashScreenManager.Default.SetWaitFormDescription(string.Format(strings.APPLY_CONTENT_IMPROVEMENTS, " (6.2.0.0) ")); } catch { }
              MrUpdates.V6.v6200_c();
              try { SplashScreenManager.Default.SetWaitFormDescription(string.Format(strings.APPLY_CONTENT_IMPROVEMENTS, " (6.3.0.0) ")); } catch { }
              MrUpdates.V6.v6300_c();
              try { SplashScreenManager.Default.SetWaitFormDescription(string.Format(strings.APPLY_CONTENT_IMPROVEMENTS, " (6.3.1.0) ")); } catch { }
              MrUpdates.V6.v6310_c();
              try { SplashScreenManager.Default.SetWaitFormDescription(string.Format(strings.APPLY_CONTENT_IMPROVEMENTS, " (6.3.2.0) ")); } catch { }
              MrUpdates.V6.v6320_c();
              try { SplashScreenManager.Default.SetWaitFormDescription(string.Format(strings.APPLY_CONTENT_IMPROVEMENTS, " (6.3.3.0) ")); } catch { }
              MrUpdates.V6.v6330_c();
              try { SplashScreenManager.Default.SetWaitFormDescription(string.Format(strings.APPLY_CONTENT_IMPROVEMENTS, " (6.5.0.0) ")); } catch { }
              MrUpdates.V6.v6500_c();


Итак, у меня есть две переменные версия класса например" (6.0.3.0) " и имя класса экс. MrUpdates.В6.v6500_c()

как заменить предыдущий код woth инструкция foreach

Что я уже пробовал:

я считаю, что мне нужно создать класс have properties и список содержит имена версий и имена классов
public partial  class Updates
    {
      
        public string Version { get; set; }
        public Something ClassName { get; set; }
        
    }


затем я создаю список "обновлений"и заполняю его переменными.

но могу ли я использовать класс Как свойства? как это назвать ?

2 Ответов

Рейтинг:
4

Richard Deeming

Использование делегата:

public class Update
{
    public string Version { get; set; }
    public Action Apply { get; set; }
}

List<Update> updates = new List<Update>
{
    new Update { Version = " (6.3.2.0) ", Apply = MrUpdates.V6.v6320_c }
    new Update { Version = " (6.3.3.0) ", Apply = MrUpdates.V6.v6330_c }
    new Update { Version = " (6.5.0.0) ", Apply = MrUpdates.V6.v6500_c }
};

foreach (Update in updates)
{
    try 
    {
        SplashScreenManager.Default.SetWaitFormDescription(string.Format(strings.APPLY_CONTENT_IMPROVEMENTS, update.Version));
    }
    catch 
    {
    }
    
    update.Apply();
}
Делегаты - Руководство По Программированию На C# | Microsoft Docs[^]


Maciej Los

5ed!

Рейтинг:
0

Garth J Lancaster

Здесь есть отличный пример Создание экземпляра объекта C# из строки с помощью активатора.CreateInstance в .NET | Джереми Линдсей[^] о вызове класса на основе его "текстового" имени строки - похоже, что это то, что вам нужно, и в этом случае ваш POCO

public partial  class Updates
{      
  public string Version { get; set; }
  public string ClassName { get; set; }      
}


Golden Basim

спасибо, я прочитал статью. но я все еще не могу знать, как назвать функцию не профессионалом.

Maciej Los

5ed!