IList.Cast <typeof(T)>()返回错误,语法看起来不错

Sar*_*pps 4 .net c# nhibernate syntax .net-3.5

public static IList<T> LoadObjectListAll<T>()
{
    ISession session = CheckForExistingSession();
    var cfg = new NHibernate.Cfg.Configuration().Configure();
    var returnList = session.CreateCriteria(typeof(T));
    var list = returnList.List();
    var castList = list.Cast<typeof(T)>();
    return castList;
}
Run Code Online (Sandbox Code Playgroud)

所以,我得到一个构建错误,我将"list"元素转换为通用IList ....有人能看到一个明显的错误吗?

Mat*_*nze 7

T不是类型也不是System.Type. T是一个类型参数. typeof(T)返回类型T.该typeof运营商不采取行动的对象上,它返回Type一个类型的对象.http://msdn.microsoft.com/en-us/library/58918ffs.aspx

@John回答你的直接问题是正确的.但是NHibernate的代码有点偏差.例如,你不应该ISessionFactory 获得之后进行配置ISession.

public static T[] LoadObjectListAll()
{
    var session = GetNewSession();
    var criteria = session.CreateCriteria(typeof(T));
    var results = criteria.List<T>();
    return results.ToArray();        
}
Run Code Online (Sandbox Code Playgroud)


jfs*_*jfs 5

我认为

var castList = list.Cast<typeof(T)>();
Run Code Online (Sandbox Code Playgroud)

应该

var castList = list.Cast<T>();
Run Code Online (Sandbox Code Playgroud)

@Jon Limjap我能看到的最明显的错误IList是a绝对不同于IList<T>.A IList是非通用的(例如ArrayList).

最初的问题已经在使用了IList<T>.有人编辑格式时删除了它.可能是Markdown的一个问题.

现在修复了.