c# - 在运行时 .net 核心中从控制器注册服务
问题描述
在我的项目中,我正在加载一些 dll 程序集,这些程序集包含控制器以及需要在我们的 DI 容器中注入的服务。
我尝试使用默认的 dotnet core DI 或 Autofac 寻找解决方案,但没有任何结果。
我知道这不是在运行时更新 DI 的好习惯,但我希望我能找到一个好的解决方案。
我有另一种方法,但它将服务保存在配置文件中,并且需要重新启动应用程序以加载配置以开始注册服务。
我的代码示例
public class ServiceFactory : IServiceProvider
{
public static IServiceCollection services { get; set; }
public static IServiceProvider serviceProvider { get; private set; }
static ServiceFactory()
{
services = new ServiceCollection();
serviceProvider = services.BuildServiceProvider();
}
public static void ConfigureServices(IServiceCollection _services)
{
services = _services;
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
public static void Register()
{
services.AddTransient<IRepo, Repo>();
}
public static void Update()
{
serviceProvider = services.BuildServiceProvider();
}
public object GetService(Type serviceType)
{
return serviceProvider.GetService(serviceType);
}
}
解决方案
推荐阅读
- reactjs - 如何使用本地后端在本地运行生产反应应用程序
- vuejs2 - element-ui el-select 奇怪的行为
- javascript - Vue路由器链接仅在刷新后才起作用
- c# - Unity Lifecyle 关于 Update 和 OnPointerClick ,谁先调用框架?
- node.js - 如何在nodejs中更新bcrypt密码?
- python-2.7 - 如何知道滚动或小部件是否在pyqt4中包含数据
- c# - C# dll 参数中的 pythonnet
- react-native - React Native TextInput:占位符和 detx 填充
- xamarin - Xamarin 构建基础属性
- python - Pandas:根据目标样本量将数据分组为单独的部分