代码之家  ›  专栏  ›  技术社区  ›  Matt

在命名空间中查找类时出现问题

  •  0
  • Matt  · 技术社区  · 14 年前

    我正在尝试从测试程序集中查找ASP.NET MVC程序集内Models命名空间中的所有类型。我试图用LINQ为我找到相关的集合,但它返回了一个空的集合。我相信这是一个简单的错误,我对林肯还是比较陌生的。

    var abstractViewModelType = typeof (AbstractViewModel);
    var baseAssembly = Assembly.GetAssembly(abstractViewModelType);
    var modelTypes = baseAssembly.GetTypes()
        .Where(assemblyType => (assemblyType.Namespace.EndsWith("Models")
                               && assemblyType.Name != "AbstractViewModel"))
        .Select(assemblyType => assemblyType);
    
    foreach(var modelType in modelTypes)
    {
        //Assert some things
    }
    

    当我到达foreach时,收到一个空引用异常。

    1 回复  |  直到 14 年前
        1
  •  1
  •   John Saunders Andrey Morozov    14 年前

    定位 NullReferenceException 在许多代码中,您必须将其分解,以查看返回空值的内容。在你的代码中,我只看到一个可能的地方。试试这个:

    var abstractViewModelType = typeof (AbstractViewModel);
    var baseAssembly = Assembly.GetAssembly(abstractViewModelType);
    var modelTypes = baseAssembly.GetTypes()
        .Where(assemblyType => (assemblyType.Namespace != null // Problem if null
                               && assemblyType.Namespace.EndsWith("Models")
                               && assemblyType.Name != "AbstractViewModel"))
        .Select(assemblyType => assemblyType);
    
    foreach(var modelType in modelTypes)
    {
        //Assert some things
    }