2

最初の行で、このコンパイル エラーが発生します。「型パラメーターの宣言は、型ではなく識別子でなければなりません。」. これを修正する方法はありますか?

 public class ExtJsGridJsonModel<IEnumerable<T>>
{
    [DataMember(Name = "total")]
    public int Total { get; set; }

    [DataMember(Name = "rows")]
    public IEnumerable<T> Rows { set; get; }

    public ExtJsGridJsonModel(IEnumerable<T> rows, int total)
    {
        this.Rows = rows;
        this.Total = total;
    }
}

アップデート:

私の質問と意図に詳細が欠けていて申し訳ありません。基本的に、私の最終目標はこれを行うことです:

new ExtJsGridJsonModel<Company>();

これではなく:

new ExtJsGridJsonModel<IEnumerable<Company>>();

基本的にIEnumerable型を省略してコードを減らしたい。どうすればいいですか?

4

2 に答える 2

5

IEnumerable宣言の一部を取り出すだけです:

public class ExtJsGridJsonModel<T>
{
    [DataMember(Name = "total")]
    public int Total { get; set; }

    [DataMember(Name = "rows")]
    public IEnumerable<T> Rows { set; get; }

    public ExtJsGridJsonModel(IEnumerable<T> rows, int total)
    {
        this.Rows = rows;
        this.Total = total;
    }
}
于 2013-02-22T17:11:10.680 に答える
1

これを使用して、本質的に 2 次元の値のセットを格納することになると思います。

public class ExtJsGridJsonModel<T> where T : IEnumerable
{
    [DataMember(Name = "total")]
    public int Total { get; set; }

    [DataMember(Name = "rows")]
    public IEnumerable<T> Rows { set; get; }

    public ExtJsGridJsonModel(IEnumerable<T> rows, int total)
    {
        this.Rows = rows;
        this.Total = total;
    }
}

そうでない場合、またはT実際に厳密に型指定された行クラスである場合は、where T : IEnumerable句を削除できます

于 2013-02-22T17:06:58.863 に答える