我有以下方法:
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)开发环境不会提供类型。
答案 0 :(得分:1)
这是具有单个属性的匿名对象
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();
}