我知道使用反射可以在单个程序集中找到类的列表(例如How to get all classes in current project using reflection?(。
有没有一种方法可以在给定的目录中只使用公共类来实现这一点?
我假设你指的是一个包含一个或多个程序集的目录,如果是这样的话,你可以这样做:
var types = new List<Type>();
var paths = Directory.GetFiles("directoryPath", "*.dll", SearchOption.TopDirectoryOnly);
foreach(var path in paths)
{
types.AddRange(Assembly.LoadFrom(path).GetTypes());
}
GetTypes
方法默认使用BindingFlags.Public
和BindingFlags.Instance
。因此,您不需要额外指定BindingFlags
参数。