我在为C#应用程序创建模块化分析架构时遇到了问题。
它基本上就像一个动态的即插即用计算器。从一个输入(A)开始,在GUI中构建多个操作过程
例如,A 2(方形) - > B(乘)A - >; C(除以)B - > d
单击GUI中的一个执行按钮,输入A,如何到达D?
在GUI一个列表框中,必要的输入为double值和 另一个列表框将使用反射说明square,multiply等加载特定接口的类型。 然后,用户将通过插入现有流程和输入来建立新流程 用A作为输入 - > square - >给出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()
}
我希望我已正确解释了我的问题。我搜索了一些示例模式但无法找到解决此问题的模式。任何人都可以指导如何解决这个问题吗?
答案 0 :(得分:1)
考虑MEF,此链接的MSDN主题甚至有一个看起来可能与您的问题类似的行走。
听起来你需要两个独立的插件类,一个用于操作本身,另一个用于在运行时提供操作元数据,因此您可以正确地组合UI(例如,操作需要多个输入或生成不止一个输出)。对于需要特殊UI的某些操作,甚至可能存在针对特定UI具有类似可扩展性的情况。