数か月前にダウンロードした 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 });
}
}
で見つかったアセンブリごとにループを 1 回実行することは理解していますがAppDomain.CurrentDomain.GetAssemblies、.Where()は単なるフィルターですが、そのフィルターがどのように機能しているか、 で検索しているデータはよくわかりませんAppDomain。
注: 私はこのAppDomain関数を使用したことがなく、その仕組みがよくわかりません。