Как мне объявить список типов классов? - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть этот пример метода, я фактически реализую его в другом решении.

Я хочу объявить список, который будет принимать другой тип в зависимости от значения switch (), что должно ЧТО-нибудь взять?

class ReportStrings
{
    string date;
    string name;
}

class ReportIntegers
{
    int number;
    int amount;
}

public void main()
{
    List<SOMETHING> LReport;

    string reportname; //let's think it has a value

    switch (reportname)
    {
        case "ReportOne": LReport = new List<ReportStrings>; break;

        case "ReportTwo": LReport = new List<ReportIntegers>; break;
    }

    Console.WriteLine(LReport.Count());    
}

1 Ответ

0 голосов
/ 14 февраля 2020

Просто используйте какой-то базовый класс и наследуйте от него. Затем создайте список базового класса и добавьте свои элементы следующим образом:

class ReportBase { }
class ReportStrings:ReportBase
{
    string date;
    string name;
}

class ReportIntegers:ReportBase
{
    int number;
    int amount;
}

public void main()
{
    List<ReportBase> LReport;

    string reportname=null; //let's think it has a value

    LReport=GetList(reportname);

    Console.WriteLine(LReport.Count());    
}
private List<ReportBase> GetList(string reportname)
{
   var LReport = new List<ReportBase>(); 
   switch (reportname)
    {
        case "ReportOne": 

          LReport.Add(new ReportStrings(){ /* ...add your values here... */};
          break;
        case "ReportTwo": 
          LReport.Add(new ReportIntegers(){ /*...add your values here... */}; 
          break;
    }
    return LReport;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...