3

設定

public interface ITable { }

public class Company : ITable {
    public int Id { get; set; }
    public string Name { get; set; }
}

public class PaginationGridModel {

    public PaginationGridModel(IList<ITable> rows) {
        //cool stuff goes here
    }
}

public GridModel GenerateModel<T>(IQueryable<T> Table) where T : ITable {
    return new GridModel((IList<ITable>)Table);
}

//Actual Call
return GenerateModel<Company>(this.dataContext.Companies);

例外が生成されました

Unable to cast object of type 'System.Collections.Generic.List`1[Company]' to type 'System.Collections.Generic.IList`1[ITable]'.

質問

Company実装しているので、 myをITableに変換できるはずですが、実際には であるため、機能したくありません。ただし、関数定義では. ここで何が間違っていますか?Generics を使用していない場合、セットアップは正常に機能します。ただし、同じコードを何度も書いていたので、汎用セットアップが必要でした-これは悪いことです:)List<Company>IList<ITable>TTITable

どんな助けでも大歓迎です。あなたが私にそれができないと言ったとしても。

4

3 に答える 3

3

.NET 3.5 の場合、これを使用できます。

return new GridModel(table.ToList().ConvertAll(x => (ITable)x));
于 2011-02-23T20:16:44.390 に答える