2010-01-21 98 views
1

本机PRISM的模块化机制支持通过路径加载模块进行组装,包含此模块。我希望有可用性来将模块的视图(XAML)存储在数据库中,以便最终用户可以更改和定制它们。选择数据库是因为它更简单地存储和检索信息,不需要重新编译和制作二进制文件。 问题是,视图包含XAML和代码隐藏,我们需要分开(?)它们并单独存储,当我们需要它们时,我们必须提示它们并加载到模块(使用反射或其他东西?),但我不知道如何以及如果有可能呢?扩展PRISM模块化方法(CompositeWPF)

回答

1

我在这里看到两个选项。简单的方法或困难的方式。

简单的方法是在驱动器上安装所有组件,并使用PRISM模块目录加载它们,具体取决于数据库的设置。

困难的方法是将程序集放入数据库,并让模块目录从那里加载程序集。您必须对程序集进行编码,可能使用Base64,将其放入数据库,然后从数据库重新加载程序集。

要从数据库记录重新加载程序集,可以使用与DirectoryModuleCatalog相同的机制。复制该类并更改它,以便从来自数据库的流中加载程序集,而不是从目录中的文件加载。

+0

你建议的两种方式只有在存储dll的地方才会有区别 - 在文件系统或数据库中。在这两种情况下,用户都需要在源代码中更改dll的XAML,重新编译它并将其重新放入数据库记录中,而不是先前版本的dll。这要求用户使用Visual Studio进行编辑并了解重新编译的dll。为了简单起见,我想让他免去这些责任。如果他只能编辑数据库中的XAML,然后应用程序动态地将它加载(使用Xaml Reader,我想)到模块中。 – 2010-01-21 11:54:21

+0

哦,我明白你的意思了。我假设你在应用中放置了某种配置屏幕,以允许用户打开/关闭模块,并且该设置存储在某个地方,可能是数据库。你想要更多的定制吗? – 2010-01-21 12:09:19

+0

是的,我希望最终用户可以更改存储在模块中的XAML视图,并且不需要重新编译dll即可应用这些更改 – 2010-01-21 12:12:46