依赖注入与事件

最开始我接手的公司代码是用了事件来进行窗口间值的传递,并且将所有的方法写到了主窗口里,于是我就像优化下将不同功能的代码进行分类,比如与PLC连接相关的方法放到PLC类里面。但是出现了一个问题,就是当我想在plc类中进行更新UI的时候,没办法像所有方法都在一起那样随意调用,于是就有了两种实现的模式,事件触发,依赖注入,虽然都只是简单的实现但是够用了。
事件:
在PLC类中声明一个事件,然后所有想要更新UI的操作就调用事件委托,在主窗口中实例化PLC类的时候顺便订阅这个类中的更新UI事件,把要传递的参数传给主窗口中的处理函数。

//PLC类里声明事件
class plc类    
    delegate 委托   
    event 事件
    。。。
    触发事件?.invoke("参数");

//主窗体里订阅事件
class MainForm
    plc.事件 += 处理方法

订阅后要注意重复订阅问题,老代码中有新建窗口时订阅事件,但没有取消,导致每次点击按钮都会进行订阅将动作重复很多次

依赖注入
plc类中添加构建函数,将主窗体类传递进来,从而调用主窗体更新方法。这好像只是简单实现,正常的依赖注入需要用到接口。

class plc类
 readonly 主窗体 _f1
  public plc(主窗体 f1){ _f1 = f1;}

普通依赖注入方法

interface 接口
  相关的方法;

class 实现1:接口
  实现方法

class 实现2:接口
  实现方法

class 其他类
  声明 接口 _inter1;
  构建函数(接口 inter1){_inter1 = inter1}

//使用
接口 inter = new 实现1;
var =  new 其他类(inter);

正常的依赖注入的方法完全解耦了函数,能够方便后面的修改与功能添加,即使更换具体的实现方法,相关的逻辑也不需要有太大的变动。

posted @ 2025-06-17 19:21  悲伤的攻城狮  阅读(19)  评论(0)    收藏  举报