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)