Как создать модуль WPF / Silverlight, использующий призму, но также и встроенный в не призменные приложения - PullRequest
1 голос
/ 14 декабря 2010

Я хочу создать модуль WPF или Silverlight, который не может быть использован только загрузчиком Shell, но также может быть встроен в приложения без PRISM.

Короче говоря, есть ли способ инициализации модуля PRISM из самого модуля, а не инициализации из Shell?

Цель Ulimate - использовать модуль PRFM для WPF / Silverlight, который можно инициализировать приложениями, не поддерживающими PRISM.

Ответы [ 2 ]

2 голосов
/ 14 декабря 2010

Для этого нет препятствий.

Интерфейс 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();
    }
}
1 голос
/ 14 декабря 2010

Это немного сложнее, чем кажется на первый взгляд, но это выполнимо. Я не знаю, используете ли вы Prism 4, но если это так, Microsoft фактически предоставляет руководство для этого сценария:

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

Вам нужно немного поработать над проектами, чтобы два проекта работали бок о бок. В Prism v4 есть образец, называемый «MultiTargeting», если вам нужен рабочий образец.

Однако ваш вопрос, касающийся разрешения инициализации модуля, а не использования оркестровки Shell / Bootstrapper, является неправильным подходом. По сути, у вас было бы две оболочки ... одна WPF и одна Silverlight. Посмотрите на образцы и посмотрите, что вы думаете.

Надеюсь, это поможет.

...