Каков тип вывода из отражения в этом коде - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть следующий метод:

public static class ReflectionHelper
{
    public static List<?> FindType<T>()
    {
        var A =
            from Assemblies in AppDomain.CurrentDomain.GetAssemblies().AsParallel()
            from Types in Assemblies.GetTypes()
            let Attributes = Types.GetCustomAttributes(typeof(T), true)
            where Attributes?.Length > 0
            select new { Type = Types };

        var L = A.ToList();

        return L;
    }
}

какой тип списка?

если я это сделаю:

foreach (var l in L) { ... }

это работает, найдите и я могу просмотреть типы, но среда разработки, которую я использую (Rider), не предоставит тип.

1 Ответ

1 голос
/ 22 апреля 2019

Это анонимный объект с единственным свойством

IEnumerable<Type> Types;

Таким образом, использование A.ToList() дает вам список анонимных объектов, которые вы не можете вернуть.

Я думаю, что вместо использования select new { Type = Types }; вы хотите использовать select Types;

Итак:

public static List<Type> FindType<T>()
{
    var types =
        from ssembly in AppDomain.CurrentDomain.GetAssemblies().AsParallel()
        from type in ssembly.GetTypes()
        let attributes = type.GetCustomAttributes(typeof(T), true)
        where attributes?.Length > 0
        select type;

    return types.ToList();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...