Module 将参数传递给Prism模块
我将所有配置存储在一个名为“配置”的模块中 大概是这样的: 配置模块:Module 将参数传递给Prism模块,module,prism,mef,Module,Prism,Mef,我将所有配置存储在一个名为“配置”的模块中 大概是这样的: 配置模块: [Export(typeof(ConfigurationModule))] public class ConfigurationModule : NotificationObject { public string ConnectionString { get; set; } } 现在,在加载模块后,我需要从ConfigureAggregateCatalog向ConnectionS
[Export(typeof(ConfigurationModule))]
public class ConfigurationModule : NotificationObject
{
public string ConnectionString { get; set; }
}
现在,在加载模块后,我需要从ConfigureAggregateCatalog向ConnectionString传递一些值
prism是如何做到这一点的,请提供一些代码
提前感谢:)我认为Prism的方法是从您的
配置模块
中填充连接字符串
,而不是从配置聚合目录
。这样做的目的是分离责任-您的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);
}
}
假设用户登录到系统,我们希望在ConfigurationModule中填写他的信息,并在以后重用这些信息。在哪里必须这样做,怎么做?谢谢你的回答,我真的不明白你在这里想要实现什么。您在这两个类中都重复了ConfigurationModule,对此有何解释?ConfigurationModule被标记为AuthenticationModule和AnotherModule的依赖项。您的IOC容器(Unity或MEF)将看到[Import]指令,并将ConfigurationModule的实例注入AnotherModule类。这样,AnotherModule就可以访问ConfigurationModule的属性(例如ConnectionString)