我将所有配置存储在一个名为configurations 的模块中
类似于以下内容:配置模块:
[Export(typeof(ConfigurationModule))]
public class ConfigurationModule : NotificationObject
{
public string ConnectionString { get; set; }
}
现在,在加载模块后,我需要从ConfigureAggregateCatalog向ConnectionString传递一些值。
做这件事的棱镜方式是什么,请提供一些代码。
提前感谢:)
我认为Prism方法是从ConfigurationModule
填充ConnectionString
,而不是从ConfigureAggregateCatalog
填充。这个想法是将职责分开——ConfigurationModule
应该加载配置,将它们提供给另一个模块,并在需要时将它们保存回某个存储库。您的ConfigureAggregateCatalog
应该完全按照它的名称进行操作——只配置IoC容器,仅此而已。
更新:在你的场景中,我假设你有类似AuthenticationModule
的东西。所以,你可以写这样的东西:
[Export]
public class AuthenticationModule
{
[Import]
public ConfigurationModule { get; private set; }
public void OnUserLoggedIn()
{
ConfigurationModule.ConnectionString = "your connection string";
}
}
[Export]
public class AnotherModule
{
[Import]
public ConfigurationModule { get; private set; }
public void DoStuff()
{
if (String.IsNullOrEmpty(ConfigurationModule.ConnectionString))
{
// user isn't logged in
}
var sqlConnection = new SqlConnection(ConfigurationModule.ConnectionString);
}
}