Проблемы с поиском классов в пространстве имен - PullRequest
0 голосов
/ 11 апреля 2010

Я пытаюсь найти все типы в пространстве имен Models внутри сборки ASP.NET MVC из тестовой сборки.Я пытался использовать 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, я получаю исключение ссылки Null.

1 Ответ

1 голос
/ 11 апреля 2010

Чтобы найти 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...