public static async Task TouchCatalog(ComposablePartCatalog composablePartCatalog)
{
var aggregate = composablePartCatalog as AggregateCatalog;
if (aggregate != null)
{
//foreach (var catalog in aggregate.Catalogs)
//{
// TouchCatalog(catalog);
//}
var actionList = new List<Task>();
foreach (var item in aggregate.Catalogs)
{
actionList.Add(TouchCatalog(item));
}
await Task.WhenAll(actionList.ToArray());
}
else
{
var metadataAssemblyCatalog = composablePartCatalog as MetadataAssemblyCatalog;
if (metadataAssemblyCatalog != null)
{
await metadataAssemblyCatalog.Realize();
}
foreach (var part in composablePartCatalog.Parts)
{
TouchPart(part);
}
}
}