使用泛型类型'System.Collections.Generic.List <t>'需要1个类型参数</t>

时间:2014-10-17 17:18:44

标签: c# generics

我有两个方法是来自这里的代码http://www.rajbandi.net/fixing-ssrs-report-viewer-control-date-picker-in-google-chrome/#comment-988,然后我将以下代码应用到我的项目中我遇到了问题。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
using System.Configuration;
using System.Web.SessionState;
using RLISDev.Models;
using RLISDev.BaseObjects;
using System.Web.Mvc;
using RLISDev.Extensions;
using RLISDev.Annotations;
using System.Collections;
protected override void OnPreRender(EventArgs e) {
    base.OnPreRender(e);
    DatePicker1.Value = string.Join(",", (new > List(GetDateParameters()).ToArray()));
}
private IEnumerable GetDateParameters() {
    // I'm assuming report view control id 
    // as reportViewer
    foreach(ReportParameterInfo info in
        ReportViewer1.ServerReport.GetParameters()) {
        if (info.DataType ==
            ParameterDataType.DateTime) {
            yield
            return string.Format("[{0}]",
                info.Prompt);
        }
    }
}

我在这里得到了错误

  

List(GetDateParameters())。ToArray())使用泛型类型   'System.Collections.Generic.List'需要1个类型参数

我不确定我错过了什么。

2 个答案:

答案 0 :(得分:3)

你必须给它一个类型参数,因为它是一个泛型类:

var test = new List<DateTime>();

取决于GetDateParameters()的返回类型;你想要的东西:

DatePicker1.Value = string.Join(",", (new List<DateTime>(GetDateParameters()).ToArray()));

答案 1 :(得分:0)

注意:我修改了我的代码

protected override void OnPreRender(EventArgs e) {
     base.OnPreRender(e);
     DatePicker1.Value = string.Join(",", (GetDateParameters().ToList().ToArray()));
 }
 private IEnumerable < string > GetDateParameters() {
     // I'm assuming report view control id as reportViewer
     foreach(ReportParameterInfo info in ReportViewer1.ServerReport.GetParameters()) {
         if (info.DataType == ParameterDataType.DateTime) {
             yield return string.Format("[{0}]", info.Prompt);
         }
     }
 }

这是有效的。