2

我想创建一个 WPF 或 Silverlight 模块,它不仅可以被 Shell 的引导程序使用,还可以嵌入到非 PRISM 应用程序中。

简而言之,有没有一种方法可以从模块本身初始化 PRISM 模块,而不是从 Shell 初始化?

Ulimate 的目标是拥有 WPF/Silverlight PRISM 模块,可以由非 PRISM 应用程序初始化。

4

2 回答 2

2

这没有障碍。

IModule接口有一个单一的无参数void方法:Initialize().

非棱镜应用程序可以通过调用该方法来初始化模块。而已。

如果另一个应用程序具有不同的插件系统,具有不同的接口,则您的模块也可以实现该接口并且该接口使用的任何初始化方法的主体都可以简单地调用Initialize(),反之亦然。

例如:

public interface IMyPluginModule
{
    void StartModule();
}

public class MyModule : IModule, IMyPluginModule
{
    public void Initialize()
    {
        // actual initialization code here
    }

    public void StartModule()
    {
        Initialize();
    }
}
于 2010-12-14T01:27:01.337 回答
1

它比乍一看要复杂一些,但它是可行的。我不知道你是否正在使用 Prism 4,但如果是这样,微软实际上为这种情况提供了指导:

http://msdn.microsoft.com/en-us/library/ff921109(v=PandP.40).aspx

您需要做一些项目操作才能让两个项目并排运行。如果您需要查看工作示例,则 Prism v4 包含一个名为“MultiTargeting”的示例。

但是,您关于允许模块自行初始化而不是编排 Shell / Bootstrapper 的问题是错误的方法。本质上,您将拥有两个 shell……一个 WPF 和一个 Silverlight。看看样本,看看你的想法。

希望这可以帮助。

于 2010-12-14T13:34:17.863 回答