我试图在测试程序集中的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时,我收到一个空引用异常。
答案 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
}