Я пишу приложение WPF с использованием PRISM 4.1 & Unity. В приложении будет настроен каждый компонент пользовательского интерфейса, включая сам Shell!Как сохранить конфигурацию оболочки с помощью PRISM 4.1 & Unity?
E.g. У меня есть интерфейс под названием IShell
. Потребители приложения могут иметь собственную реализацию IShell
, если они не удовлетворены моей реализацией по умолчанию, которая имеет определенные Регионы и Представления определенным образом.
Теперь из моего класса Bootstrapper (который наследует UnityBootstrapper
), я хочу знать тип зарегистрированного для IShell
с контейнером Unity. Override CreateShell
вернет настроенный тип IShell
.
Мой App.config
выглядит следующим образом:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
</configSections>
<unity>
<container>
<register type="Interfaces.IShell, Interfaces" mapTo="PrismApp.Shell, PrismApp"/>
</container>
</unity>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
В классе Bootstrapper, я следующий код:
public class PrismAppBootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
var obj = ServiceLocator.Current.GetInstance<IShell>() as DependencyObject;
return obj;
}
}
В App.xaml.cs приложения WPF, я имею в инстанцировании PrismAppBootstrapper
:
PrismAppBootstrapper prismAppBootstrapper = new PrismAppBootstrapper();
prismAppBootstrapper.Run();
Однако, когда я запускаю этот код, я получаю исключение : "InvalidOperationException - текущий тип, Interface.IShell, является интерфейсом и не может быть сконструирован. Вам не хватает картографирования типов? "
Как решить эту проблему? Почему приложение не знать, зарегистрированный тип Ishell, который есть в app.config файл?
Я уже пробовал это. Эта перегрузка 'Resolve' больше недоступна :( – Learner
Вам нужно указать UnityExtensions: с использованием Microsoft.Practices.Prism.UnityExtensions; –