SkillAgentSearch skills...

UPPERIOC

这是一个由个人开发的用于辅助上位机系统开发的 IOC 多功能插件模块,具备良好的可扩展性和灵活性。 该模块基于控制反转(Inversion of Control, IOC)理念,支持插件扩展、事件注入和依赖注入,大幅提升了上位机开发过程中的模块组织效率与系统解耦能力。 This is a multifunctional IOC plugin module independently developed to assist in host system (HMI) development.

Install / Use

/learn @mrwangshipei/UPPERIOC
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

UPPERIOC

UPPERIOC 是一款专为 WinFormsWPF 上位机项目设计的轻量级 IOC(控制反转)插件系统,旨在简化模块化设计,提升系统解耦度,支持依赖注入、插件动态加载、事件总线等功能,适用于工业控制、数据采集、设备通信等领域。


<p align="center"> <a href="https://github.com/mrwangshipei/UPPERIOC"> <img src="https://badgen.net/badge/Github/mrwangshipei/21D789?icon=github"> </a> <img src="https://img.shields.io/badge/NetStandard-2.0-blue"> <a href="https://github.com/mrwangshipei/UPPERIOC/blob/master/LICENSE"> <img alt="GitHub" src="https://img.shields.io/github/license/mrwangshipei/UPPERIOC?style=flat-square"> </a> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/mrwangshipei/UPPERIOC?style=flat-square"> <img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/mrwangshipei/UPPERIOC?style=social"> </p>

目录

项目简介

UPPERIOC 旨在通过依赖注入、插件扩展等机制,使得上位机系统的模块化开发更加高效和灵活。通过实现 插件化 架构,你可以动态加载、卸载和更新系统中的功能模块,而无需修改主程序代码,从而提高系统的可维护性和扩展性。

功能亮点

  • IOC 容器:自动管理对象的生命周期和依赖关系,实现模块之间的解耦。
  • 插件系统:支持动态加载和卸载插件,模块功能可以按需扩展。
  • 事件总线:模块之间的通信通过事件机制实现,不直接依赖。
  • 注入机制:支持通过属性注入和构造函数注入依赖对象。

快速开始

安装

首先,您需要通过 NuGet 安装 UPPERIOC:

dotnet add package UPPERIOC

基本用法

  1. 容器的初始化:

在上位机的Program.cs,窗体打开之前使用如下代码初始化:

UpperIocApplication.RunInstance(md=>{});
  1. 注册依赖:
U.C.Register<MainForm>();
// or
MainForm m = new();
U.C.Register<MainForm>(m);
  1. 注入依赖:
var f = U.C.GetInstance<MainForm>();
public class MainForm
{
    [IOCProperties]
    public IMyService MyService { get; set; }
    
    public MainForm()
    {
        // 使用 MyService
    }
}
  1. 插件加载:
UpperIocApplication.RunInstance(md=>{
  md.AddModule<XXXModule>();
});
  1. 发布事件:
U.E.Publish<MyEvent>();

系统架构

系统架构通过 IOC 容器插件加载器事件总线 实现解耦。各模块之间的交互通过注入和事件驱动进行。

架构图


## 1. 事件系统加载
- 加载事件系统
- 推送事件 "事件加载成功"

## 2. 日志中心加载
- 加载日志中心
- 推送事件 "日志中心加载成功"

## 3. IOC 和插件生命周期混合加载
- 初始化 IOC 容器
- 插件加载开始
    - 插件初始化
    - 插件生命周期事件推送
    - IOC 生命周期事件推送

## 4. 生命周期事件推送
- 推送插件初始化成功事件
- 推送 IOC 容器初始化成功事件

## 5. 注册软件退出事件
- 注册容器注销前事件
- 注册容器注销后事件

## 6. 退出操作
- 容器注销
- 触发 "容器注销前" 事件
- 触发 "容器注销后" 事件

关键模块

  • IOC 容器:负责管理服务的注册与注入。
  • 插件系统:动态加载、卸载插件。
  • 事件总线:实现松散耦合。

插件开发

UPPERIOC 提供了简洁的插件开发接口,帮助你快速构建可插拔的功能模块。

插件基本模板

每个插件需要实现 IUPPERModule 接口:

public class MyPlugin : IUPPERModule
{
    
}

可以通过实现生命周期接口来注册生命周期

示例项目

你可以参考以下示例项目来快速上手:

常见问题

1. 如何定义插件间的依赖?

可以通过 IOC 容器管理插件之间的依赖关系,确保插件按正确顺序加载。

2. 是否支持跨项目使用?

是的,你可以将 UPPERIOC 作为一个共享库引入到多个项目中。

许可证

该项目使用 MIT 许可证

Related Skills

View on GitHub
GitHub Stars34
CategoryDevelopment
Updated2mo ago
Forks5

Languages

C#

Security Score

95/100

Audited on Jan 29, 2026

No findings