ASP.NET Core2,通过反射批量注入程序集
public void ConfigureServices(IServiceCollection services)
{
string strValue = Configuration.GetSection("Appsetings").GetSection("key").Value;
foreach (var item in GetClassName(strValue))
{
foreach (var typeArray in item.Value)
{
services.AddScoped(typeArray, item.Key);
}
}
services.AddMvc();
}
private static Dictionary<Type, Type[]> GetClassName(string assemblyName)
{
if (!String.IsNullOrEmpty(assemblyName))
{
Assembly assembly = Assembly.Load(assemblyName);
List<Type> ts = assembly.GetTypes().ToList();
var result = new Dictionary<Type, Type[]>();
foreach (var item in ts.Where(s => !s.IsInterface))
{
var interfaceType = item.GetInterfaces();
if (item.IsGenericType) continue;
result.Add(item, interfaceType);
}
return result;
}
return new Dictionary<Type, Type[]>();
}