在集合中创建通用集合

时间:2011-05-16 01:28:01

标签: c# .net generics collections

我有两个类,想要构建一个包含集合的集合。因此,我有..

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;
   }
}

想知道正确的方法。

此致

标记

3 个答案:

答案 0 :(得分:2)

你快到了:

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

我想补充一些评论:

  • 应该是Param e ters,而不是Param a ters。
  • 我也会将 P arameterList大写(与其他公共属性一样)。
  • 除非您希望将来的Parameters类包含更多字段,否则我不确定是否值得为此设置一个额外的类(仅用于封装List<String>)。

答案 1 :(得分:1)

海因兹的回答是正确的。但是为了完整性,您还可以创建一个构造函数,它接受标准字段以及Parameter类型的param数组。如果你的班级很小,那么语法就会更清晰。

答案 2 :(得分:1)

而不是拥有一个字符串列表,而不是一个参数列表......

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" } }
};