public static AssembliesFromPath ( string path, bool>.Func |
||
path | string | |
assemblyFilter | bool>.Func | |
Результат | IEnumerable |
public static IEnumerable<Assembly> AssembliesFromPath(string path, Func<Assembly, bool> assemblyFilter)
{
var assemblyPaths = Directory.GetFiles(path)
.Where(file =>
Path.GetExtension(file).Equals(
".exe",
StringComparison.OrdinalIgnoreCase)
||
Path.GetExtension(file).Equals(
".dll",
StringComparison.OrdinalIgnoreCase));
foreach (var assemblyPath in assemblyPaths)
{
var assembly =
AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(
x => x.GetName().Name == Path.GetFileNameWithoutExtension(assemblyPath));
if (assembly == null)
{
try
{
assembly = Assembly.LoadFrom(assemblyPath);
}
catch
{
}
}
if (assembly != null && assemblyFilter(assembly))
{
yield return assembly;
}
}
}