IBLL接口層類庫
namespace IBLL
{
public interface ICar
{
string CarName();
}
}
namespace IBLL
{
public interface IRed
{
string RedName();
}
}
BLL實現(xiàn)接口層類庫
namespace BLL
{
public class Car : ICar
{
public string CarName()
{
return "BBA";
}
}
}
namespace BLL
{
public class Red : IRed
{
public string RedName()
{
return "紅色";
}
}
}
program中利用反射批量注入文章來源:http://www.zghlxwxcb.cn/news/detail-644216.html
// 獲取實現(xiàn)接口的類庫的程序集
var assembly = Assembly.Load("BLL");
//獲取定義接口的類庫的程序集
var assembly1 = Assembly.Load("IBLL");
// 獲取所有接口類型
var interfaceTypes = assembly1.GetTypes().Where(t => t.IsInterface).ToList();
// 遍歷接口類型
foreach (var interfaceType in interfaceTypes)
{
// 獲取實現(xiàn)該接口的所有類型
var implementationTypes = assembly.GetTypes().Where(t => interfaceType.IsAssignableFrom(t) && !t.IsAbstract).ToList();
// 注冊實現(xiàn)類型到IoC容器中
foreach (var implementationType in implementationTypes)
{
builder.Services.AddTransient(interfaceType, implementationType);
}
}
在控制器中使用構(gòu)造函數(shù)傳參就可以調(diào)用已經(jīng)注冊的所有是是實現(xiàn)接口的類了的實列了文章來源地址http://www.zghlxwxcb.cn/news/detail-644216.html
public readonly ICar _car;
public readonly IRed _red;
public WeatherForecastController(IRed red, ICar car)
{
_red = red;
_car = car;
}
[HttpGet]
public string car()
{
return _car.CarName();
}
[HttpGet]
public string red()
{
return _red.RedName();
}
到了這里,關(guān)于asp.net core6 webapi 使用反射批量注入接口層和實現(xiàn)接口層的接口的類到ioc中的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!