在命名空间中查找类的问题

时间:2010-04-11 02:37:04

标签: c# linq reflection

我试图在测试程序集中的ASP.NET MVC程序集中找到Models名称空间中的所有类型。我试图使用LINQ为我找到相关的设置,但它在我身上返回一个空集。我确信这是一个简单的错误,我对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 个答案:

答案 0 :(得分:1)

要在很多代码中找到NullReferenceException,您必须将其分解以查看返回的内容为null。在你的代码中,我只看到一个可能的地方。试试这个:

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
}