2012-03-13 88 views
0

我保存了一個名爲Congigurations參數傳遞到棱鏡模塊

事情是這樣的模塊,在我所有的配置: ConfigurationModule:

[Export(typeof(ConfigurationModule))] 
    public class ConfigurationModule : NotificationObject 
    { 
     public string ConnectionString { get; set; } 
    } 

現在我需要一些值傳遞給的ConnectionString在模塊加載完成後從ConfigureAggregateCatalog執行。

這樣做的棱鏡方式是什麼,請提供一些代碼。

感謝提前:)

回答

0

我認爲棱鏡的方法是從你的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); 
    } 
} 
+0

假設用戶登錄到系統中,我們要填補他的信息來源在** ** ConfigurationModule和重複使用以後的信息。在哪裏必須這樣做,以及如何? – Amino 2012-03-13 11:41:09

+0

感謝您的回答,我真的沒有得到你想要在這裏實現的目標。你在這兩個類中都有重複的ConfigurationModule,對此有何解釋? – Amino 2012-03-13 20:47:33

+1

ConfigurationModule被標記爲AuthenticationModule和AnotherModule的依賴關係。您的IOC容器(Unity或MEF)將看到[Import]指令並將您的ConfigurationModule實例注入AnotherModule類。這樣,AnotherModule可以訪問ConfigurationModule的屬性(如ConnectionString。) – lecrank 2012-03-14 00:19:46