Создание общей коллекции в коллекции - PullRequest
0 голосов
/ 16 мая 2011

У меня есть два класса, и я хочу создать коллекцию, которая содержит коллекцию. Таким образом, у меня есть ..

public class GenericReportInfo 
{
    public string ReportName { get; set; }
    public string ReportFileName { get; set; }
    public Paramaters parameterList { get; set; }
}

public class Paramaters 
{
    public List<string> parameter { get; set; }

}

И хочу добраться до точки, где я могу просто добавить в коллекцию встроенный, т.е.

public class GenericReportsInfo
{
   public List<GenericReportInfo> CreateAndInitialize()
   {
       List<GenericReportInfo> reportsList = new List<GenericReportInfo>();
       GenericReportInfo info = new GenericReportInfo() 
         { "Agent", "Agent", new paramter() {"StateId"} };

       return reportsList;
   }
}

Просто хотел бы узнать правильный способ добраться до этого.

Привет

Mark

Ответы [ 3 ]

2 голосов
/ 16 мая 2011

Вы почти на месте:

List<GenericReportInfo> reportsList = new List<GenericReportInfo>();
GenericReportInfo info = new GenericReportInfo()
{
    ReportName = "Agent",
    ReportFileName = "Agent",
    parameterList = new Paramaters() { parameter = new List<string> { "StateId" } }
};

Я хотел бы добавить несколько комментариев, хотя:

  • Это должен быть параметр e ters, а не Param a ters.
  • Я бы также прописал P arameterList (как и другие открытые свойства).
  • Если вы не ожидаетеКласс параметров будет содержать больше полей в будущем, я не уверен, стоит ли иметь для этого дополнительный класс (просто для инкапсуляции List<String>).
1 голос
/ 16 мая 2011

Вместо того, чтобы иметь список строк, вы могли бы иметь список параметров вместо ...

public class GenericReportInfo 
{
    public string ReportName { get; set; }
    public string ReportFileName { get; set; }
    public IList<Parameter> Parameters { get; set; }

    public GenericReportInfo(
        string reportName,
        string reportFileName,
        IEnumerable<Parameter> parameters)
    {
        ReportName = reportName;
        ReportFileName = reportFileName;
        Parameters = new List<Parameter>(parameters);
    }
}

public class Parameter 
{
    public string Name { get; set; }
}

Затем инициализировать ...

GenericReportInfo info = new GenericReportInfo()
{
    ReportName = "Agent",
    ReportFileName = "Agent",
    Parameters = new List<Parameter>() { new Parameter(){ Name = "StateId" } }
};
1 голос
/ 16 мая 2011

Хайнци ответ правильный.Но просто для полноты вы можете также создать конструктор, который принимает стандартные поля, а также массив параметров вашего типа параметра.Если ваш класс маленький, это может быть более чистый синтаксис.

...