我们有一个类似结构化的n层应用程序,但我不会说它是n层的。 最顶层的Form / AKA MainForm /连接到DB并获取可用模块的列表,根据该列表,它开始加载不同的模块。每个模块都是一个单独的项目,有一个顶级类,派生自一个抽象类,所有模块都派生自该类。
所以一直到现在,到目前为止,我们已经运行得很好,传递了连接字符串,模块和主应用程序之间的对话框。
下一步是实现每个模块要使用的全局图标库,问题是每个模块应该能够将自己的图像加载到它。
我正在考虑一个全局静态类,它返回当前正在运行的ImageList类的实例。我不知道从哪里开始,所以有人可以提供一个全局类的例子,可以静态使用而不需要声明或传递它吗?它有可能吗?
修改
rephrase attempt:理想情况下是每个独立模块能够插入资源的全局资源,每个模块都可以从中获取图像(如果存在)。我甚至不知道从哪里开始或寻找什么。
编辑2:
刚刚检查过:
有3个项目:1个主要,1个孩子,1个中间
中间的主要参考文献
中间的儿童参照
1个主要启动并在“inbetween”上调用静态方法,将一些字符串加载到其中。使用Reflection“main”实例加载child.dll并使用反射实例化对象,然后调用子obj中“inbetween”中接口中定义的方法,后者又调用“inbetween”之后的静态方法“main” “打印静态”inbetween“中的所有字符串。它的工作原理!我就像WTF?我猜Reflection结合了2“inbetweens”
答案 0 :(得分:0)
public static class Foo
{
public static int Bar()
{
return 1;
}
public static void AddImage(Image img, String key){...}
public static Image GetImage(String key){...}
}
答案 1 :(得分:0)
所以,你的意思是你需要一个“模块静态”(表现得像线程静态,但瞄准模块)方法?
答案 2 :(得分:0)
一种简单的方法是拥有一个共享库,每个模块都可以引用它。因此,每个模块都知道共享库提供的类的存在。然后,您可以在该共享库中拥有一个类来管理您的图像。
为了使它更优雅,我会研究像Unity这样的依赖注入框架。让共享库(基础结构库)保持接口的定义以管理图像。然后有一个实现该特定接口的模块,然后在unity容器中注册该实现器。因此每个模块都将通过统一容器来重新接收接口。
这样,每个模块都不会紧密耦合到实现接口的模块,而只会耦合到仅包含接口定义的共享库。