博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.net core中使用Type.GetType()从字符串获取类型遇到的问题
阅读量:7250 次
发布时间:2019-06-29

本文共 710 字,大约阅读时间需要 2 分钟。

问题背景是想在 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 运行时在进行反射操作时并不知道从哪个程序集加载这个类型,只会从当前程序集加载,当然找不到。所以,不仅要提供类型的完整名称,还要提供程序集的名称, 就是为此而生。

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

 

转载地址:http://zbhbm.baihongyu.com/

你可能感兴趣的文章
sendmail在企业网中的应用
查看>>
Linux 性能监测工具
查看>>
linux内核参数注释与优化
查看>>
[RHEL7.1]修改网卡命名方式 eno16777763变为eth0
查看>>
Java操作PDF文档(PDFBox)
查看>>
Java研发岗位面试归类B(附答案)
查看>>
VMware Workstation 12 Pro 虚拟机的使用(一)介绍
查看>>
ThinkPHP分页和删除操作
查看>>
CCIE职业发展系列典型案列分析之RIPv1协议配置的解决方案
查看>>
【高德地图API】如何制作自己的旅游地图?
查看>>
windbg 通过网络联机调试配置
查看>>
iOS 瘦身之道
查看>>
nodejs的配置
查看>>
centos7下集群部署zookeeper(伪集群)
查看>>
mysql主从复制
查看>>
IT168:2014年APT***发展趋势及防御策略调研
查看>>
用好ul和li
查看>>
基于JQUERY的AJAX跨域问题完美解决方案
查看>>
搭建LVS+Keepalived高可用负载均衡集群
查看>>
局域网PING不通原因是什么?解决ping不通局域网电脑
查看>>