即插即用体系结构

本文关键字:体系结构 即插即用 | 更新日期: 2023-09-27 18:20:21

我在为C#应用程序创建模块化分析架构时遇到问题。

目标:

它基本上就像一个动态即插即用计算器。从一个输入(A)开始,在GUI 中构建多个操作过程

例如,A²(平方)->B(乘)A->C(除以)B->D

用一个输入A点击GUI中的一个执行按钮,如何到达D?

在GUI中,有一个列表框,其中包含双值和另一个列表框将使用反射加载特定接口的类型,例如平方、乘法等。。然后,用户将通过插入现有流程和输入来建立新流程以A为输入->平方->以B为输出->以A、B为输入->乘法->以C为输出->使用C/A->输出D在特定进程的实例化过程中,它们的输出将使用构造函数动态加载。

问题示例:

public interface IProcess
{ 
 double ExecuteProcess()
}

基本工艺类别:

public abstract class Process
{
  public double Output {get; set;}
}

流程类示例:

public class Square : Process, IProcess
{
   public double Input {get; set;}
   public double ExecuteProcess()
}

问题

我希望我已经正确地解释了我的问题。我搜索了一些示例模式,但找不到解决这个问题的模式。有人能指导如何解决这个问题吗?

即插即用体系结构

考虑一下MEF,这个链接的MSDN主题甚至有一个演练,看起来可能与您的问题类似。

不过,在我看来,你需要两个独立的插件类,一个用于操作本身,另一个在运行时提供操作元数据,这样你就可以正确地组成UI(例如,一个操作需要多个输入还是产生多个输出)。对于某些需要特殊UI的操作,甚至可能存在对特定UI具有类似可扩展性的情况。