分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

.net core中使用Type.GetType()从字符串获取类型遇到的问题

发布时间:2023-09-06 01:21责任编辑:彭小芳关键词:暂无标签

问题背景是想在 appsettings.json 中动态配置依赖注入,依赖注入代码如下:

services.AddSingleton(typeof(ISmsService), Type.GetType(Configuration["smsService"]));

appsettings.json 中的配置如下:

{ ?"smsService": "Cnblogs.Sms.Aliyun.AliyunSmsService"}

但程序运行时  Type.GetType(Configuration["smsService"]) 的值总是 null 。

改为用 Assembly.Load 先加载程序集( Cnblogs.Sms.Aliyun 是单独的程序集)然后获取类型,可以成功获取。

services.AddSingleton(typeof(ISmsService), ????Assembly.Load("Cnblogs.Sms.Aliyun").GetType(Configuration["smsService"]));

后来一想,只提供"Cnblogs.Sms.Aliyun.AliyunSmsService",.net core 运行时在进行反射操作时并不知道从哪个程序集加载这个类型,只会从当前程序集加载,当然找不到。所以,不仅要提供类型的完整名称,还要提供程序集的名称,Fully Qualified Type Name 就是为此而生。

将  "Cnblogs.Sms.Aliyun.AliyunSmsService"  改为  "Cnblogs.Sms.Aliyun.AliyunSmsService, Cnblogs.Sms.Aliyun" ,问题就解决了。

.net core中使用Type.GetType()从字符串获取类型遇到的问题

原文地址:http://www.cnblogs.com/dudu/p/7750363.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved