Можно ли заменить использование метода ForEach()
на Select()
или что-то еще, чтобы написать следующий код в одну строку с вложенными методами расширения? ИЛИ может быть есть другие способы улучшить алгоритм?
var list = new List<IStatementParser>();
System.IO.Directory.GetFiles(path, "*.dll")
.ForEach(f => System.Reflection.Assembly.LoadFrom(f)
.GetTypes()
.Where(t => !t.IsInterface && typeof(IFoo).IsAssignableFrom(t))
.ForEach(t => list.Add((IFoo)Activator.CreateInstance(t))));
return list.ToDictionary(k => k.Name, v => v.GetType());
Загружает все классы из сборок в path
, которые реализуют IFoo
, и добавляет их к Dictionary<string, Type>
, где строка IFoo.Name