Prism / MEF: Como registrar o ViewWithRegion sem codificar o nome da região

Estamos criando um aplicativo WPF Prism. Temos desenvolvedores diferentes trabalhando em projetos de módulos diferentes, e vários módulos são injetados no Shell de Aplicativo principal. A aplicação principal também é um projeto separado. Também queremos poder usar os módulos em diferentes aplicações. Não queremos ter que nomear as regiões com os mesmos nomes em todos os aplicativos.

Por exemplo, digamos que temos um módulo para ser usado em duas aplicações diferentes. Em um aplicativo, o desenvolvedor pode nomear a região do módulo "DetailsRegion" e, no outro, o desenvolvedor pode nomear a região "ResultsRegion".

Todos os exemplos que posso encontrar registram a View with the Region codificando o nome da região na definição de classe do módulo:

myRegionManager.RegisterViewWithRegion("RegionNameHere", GetType(ModuleViewType))

O que eu quero fazer é colocar o nome da região no arquivo app.config do aplicativo principal e passar esse nome para o módulo. Algo assim

No app.config do aplicativo Shell principal:

<Modules>
   <SearchModule>
       <add key="RegionName" value="SearchRegion" />
    </SearchModule>
</Modules>

E no arquivo de classe do módulo:

Dim settings As NameValueCollection = CType(ConfigurationManager.GetSection("Modules/SearchModule"), NameValueCollection)
Dim regionName as string = settings("RegionName")
myRegionManager.RegisterViewWithRegion(regionName, GetType(SearchModuleType)

e certa forma, este seria o último passo para desacoplar completamente os módulos do shell e um do outr

Isso funciona perfeitamente noVisualizaçõe do módulo. Mas não posso fazer isso no @ do móduclass definition, pois o ConfigurationManager não está disponível nesse níve

Eu posso fazer isso colocando o nome da região na seção ApplicatonSettings do módulo app.config. Mas isso anula o objetivo de poder armazenar o módulo em um local para ser carregado por vários aplicativos. Ele realmente precisa estar no aplicativo principal app.config.

Existe uma maneira de registrar a exibição de um módulo com uma região, sem codificar o nome da região no código? Tentamos tanto NÃO codificar nada. É realmente necessário aqui?

questionAnswers(2)

yourAnswerToTheQuestion