C# 反射 Assembly再次学习

本文从接触C#三年后的感悟出发,探讨Assembly的重要性,解释Assembly作为程序装配的概念,如何通过它应对需求变化。文章通过类比和实例展示了Assembly在动态加载模块中的优势,并提供了一个串口操作的代码示例,强调了Assembly在软件设计中的关键作用。
摘要由CSDN通过智能技术生成

Assembly回炉再造



前言

从接触c#到现在已经是第三个年头了,OOP(面向对象编程)编程的基本方法算是已经可以使用,但在工作中发现,只是单纯的OOP,还是有很多的问题,程序还是不够精妙,冗余的代码非常多,至此发现,Assembly的回炉有必要进行一下了。


一、Assembly是什么?

网上通用的解释非常多,但很多对应没有使用过的新同学会比较晦涩。这里我就写下我自己对于反射的理解。

Assembly的英文翻译是装配,要知道,我们的程序是有字段+方法(函数)组成,在OOP的开发中程序的组成是一下部分
1.类=字段+方法
2.程序集=类+类
3.项目=程序集+程序集

知道程序的组成,下面我们来理解Assembly。
举个例子:
你的几个同事和你同事开发一个程序,你开发主体,你的同事们开发各个模块,此时,你不就要和他们定调用协议(接口),此时你的接口定义好了,你的同事会按照你定的接口去完成模块的开发,最后,模块开发好会给你的DLL,你同事比较尽职,开发了两套方案的模块,给了你2个DLL,都实现了你的接口。

在学习OOP的初期,我们想动态的在软件中切换两个模块,我们可能会用“简单工厂模式”。
类似于:

switch(“选择模块”)
				case:模块1;break;
				case:模块2;break

看到这里,我就在想一个问题,要是需求又变了,需要模块3,这时又要改代码,这样就会非常麻烦。

在软件设计的过程中常常会遇到这种问题,为什么说常常会有这些问题呢?因为需求一种在变,软件开发的高境界是,敌变,我不变,“以不变应万变”。
如何用Assembly来应对这种情况呢?

模块接口 object=Assembly.Load(“模块对象”);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值