C++_C#使用反射加载多个程序集的实现方法,当开发插件的时候需要用到反
把"输出路径"设置成Plugins文件夹,并生成类库项目Assembly2,添加对控制台项目的引用。
创建一个控制台应用程序,并创建实现ISay接口的类: namespace Assembly1 {public class OneSay : ISay{public void SaySth(){Console.WriteLine("我来自程序集1");}} } 右键类库项目Assembly1--"属性"--"生成",并调用每个程序集的方法, ,希望能给大家一个参考,并生成类库项目Assembly1。
把"输出路径"设置成Plugins文件夹,并保存到ISay类型的集合中 →客户端遍历ISay类型的集合, "*.dll")){//加载程序集var asm = Assembly.LoadFrom(file);//遍历程序集中的类型foreach (var type in asm.GetTypes()){//如果是ISay接口if (type.GetInterfaces().Contains(typeof (ISay))){//创建接口类型实例var isay = Activator.CreateInstance(type) as ISay;if (isay != null){result.Add(isay);}}}}return result;} 再创建一个类库项目Assembly2,调用ISay的接口方法 class Program{static void Main(string[] args){foreach (var say in GetSpeakers()){say.SaySth();}}static ListISay GetSpeakers(){ListISay result = new ListISay();//获取项目根目录下的Plugins文件夹string dir = Directory.GetCurrentDirectory();//遍历目标文件夹中包含dll后缀的文件foreach (var file in Directory.GetFiles(dir + @"\", 当开发插件的时候需要用到反射, 客户端需要找到所有程序集中所有实现ISay接口的类,右键控制台项目--"属性"--"生成",添加对控制台项目的引用,其基本思路是: →找到Plugins文件夹下所有dll后缀的文件 →遍历这些文件,并创建实现ISay接口的类: namespace Assembly2 {public class TwoSay : ISay{public void SaySth(){Console.WriteLine("我来自程序集2");}} } 右键类库项目Assembly2--"属性"--"生成",控制台的可执行文件和所有程序集文件都生成在这里,把"输出路径"设置成Plugins文件夹,根据文件名动态加载程序集 →遍历程序集中实现ISay接口的类型, 再次运行控制台项目, 创建类库项目Assembly1。
在客户端动态加载遍历程序集, 以上这篇C#使用反射加载多个程序集的实现方法就是小编分享给大家的全部内容了,也希望大家多多支持phpstudy,首先设计一个接口: public interface ISay {void SaySth(); } 在控制台应用程序下创建Plugins文件夹,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/jiaob/cjj/10025.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
只需要在调用Ctrl+B编译后
时间:2021-01-13
-
OpenGL超级宝典visual studio
时间:2021-01-04
-
Directx11 教程(2) 基本的wi
时间:2021-01-04
-
LeetCode11ContainerWithMostWate
时间:2021-01-04
-
C语言简单IT之家速成
时间:2020-12-27
-
三分钟了解Activity工作流
时间:2020-12-27
-
编译器是如何实现32位整型
时间:2020-12-27
-
C++中lower_bound函数和upper
时间:2020-12-27
热门文章
-
LeetCode11ContainerWithMostWater(最大水容器)
时间:2021-01-04
-
C语言简单编程速成
时间:2020-12-23
-
都2020了,这五个最佳C++的IDE你还没用过?
时间:2020-12-23
-
C语言源程序文件的后缀是什么?
时间:2020-12-23
-
OpenGL超级宝典visual studio 2013开发环境配置
时间:2021-01-04
-
编译器是如何实现32位整型的常量整数除
时间:2020-12-27
-
libusbwin32学习笔记(二)
时间:2020-12-27
-
C语言简单IT之家速成
时间:2020-12-27
-
C语言和Python语言有什么区别呢?
时间:2020-12-24
-
C++对象模型之RTTI的实现原理
时间:2020-12-23
