【问题标题】:Creating Generic Collection within a collection在集合中创建通用集合
【发布时间】:2011-05-16 01:28:00
【问题描述】:

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

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

}

并且想要达到我可以简单地添加到集合内联ie的地步

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

       return reportsList;
   }
}

只是想知道正确的方法。

问候

标记

【问题讨论】:

    标签: c# .net generics collections


    【解决方案1】:

    你快到了:

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

    不过,我想添加一些 cmets:

    • 应该是 Parameters,而不是 Paramaters。
    • 我也会将 ParameterList 大写(与其他公共属性一样)。
    • 除非您希望 Parameters 类在未来包含更多字段,否则我不确定是否值得为此添加一个额外的类(只是为了封装一个 List&lt;String&gt;)。

    【讨论】:

      【解决方案2】:

      Heinzi 的回答是正确的。但为了完整起见,您还可以创建一个构造函数,该构造函数采用标准字段以及 Parameter 类型的参数数组。如果您的班级很小,则可以使用更简洁的语法。

      【讨论】:

        【解决方案3】:

        您可以使用参数列表来代替字符串列表...

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-14
          • 2020-07-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-11
          • 2016-05-02
          • 1970-01-01
          相关资源
          最近更新 更多