我正在挖掘几个月前下载的一个 MVC 示例,并遇到了一个foreach
使用AppDomain.CurrentDomain
. 我希望有人可以解释foreach
循环正在搜索什么。
foreach (var assembly in AppDomain.CurrentDomain
.GetAssemblies()
.Where(a => a.GetName().Name.Contains("Spring")))
{
var configTypes = assembly
.GetTypes()
.Where(t => t.BaseType != null
&& t.IsClass
&& !t.IsAbstract
&& t.BaseType.IsGenericType
&& t.BaseType.GetGenericTypeDefinition() == typeof(EntityTypeConfiguration<>)
&& t.BaseType.GetGenericArguments().Any(ta => _modelInterfaceType.IsAssignableFrom(ta)));
foreach (var type in configTypes)
{
var entityType = type.BaseType.GetGenericArguments().Single();
var entityConfig = assembly.CreateInstance(type.FullName);
addMethod.MakeGenericMethod(entityType)
.Invoke(modelBuilder.Configurations, new object[] { entityConfig });
}
}
我确实理解它在 中找到的每个程序集运行一次循环,AppDomain.CurrentDomain.GetAssemblies
并且.Where()
只是一个过滤器,但我不确定该过滤器是如何工作的或它在AppDomain
.
注意:我从未使用过该AppDomain
功能,并且真的不明白它是如何工作的。