2013-03-27 215 views
2

我正在嘗試編寫類似於項目「模塊化與統一」的東西。 我建立了2個模塊:模塊A(通過代碼加載)和模塊D(從目錄加載)。 都成功加載。棱鏡模塊依賴關係wpf

但是當我嘗試設置依賴關係,它不工作。 我真的不知道在這個項目中提到的依賴項的位置。 (我設置的依賴在ModuleA類的屬性,爲模被建立後複製) 這是我實現:

Bootstrapper.cs

protected override IModuleCatalog CreateModuleCatalog() 
{ 
    return new AggregateModuleCatalog(); 
} 

protected override void ConfigureModuleCatalog() 
{ 
    base.ConfigureModuleCatalog(); 

    Type moduleAType = typeof(ModuleAModule); 
    ModuleCatalog.AddModule(new ModuleInfo() 
    { 
     ModuleName = ModuleNames.ModuleA, 
     ModuleType = moduleAType.AssemblyQualifiedName 
    });  

    DirectoryModuleCatalog directoryCatalog = new DirectoryModuleCatalog() { ModulePath = @".\Modules" }; 
    ((AggregateModuleCatalog)ModuleCatalog).AddCatalog(directoryCatalog); 
} 

protected override void ConfigureContainer() 
{ 
    base.ConfigureContainer(); 

    this.RegisterTypeIfMissing(typeof(IModuleTracker), typeof(ModuleTracker), true); 
} 

ModuleA.cs

[Module(ModuleName = ModuleNames.ModuleA)] 
[ModuleDependency(ModuleNames.ModuleD)] 
public class ModuleAModule : IModule 
{ 
    private ILoggerFacade _logger; 
    private IModuleTracker _moduleTracker; 

    public ModuleAModule(ILoggerFacade logger, IModuleTracker moduleTracker) 
    { 
     _logger = logger; 
     _moduleTracker = moduleTracker; 

     _moduleTracker.ModuleConstructed("ModuleA"); 
    } 

    public void Initialize() 
    { 
     _logger.Log("ModuleA demonstrates logging during Initialize().", Category.Info, Priority.Medium); 

     _moduleTracker.ModuleInitialized("ModuleA"); 
    } 
} 

爲模。 cs

[Module(ModuleName = ModuleNames.ModuleD)] 
public class ModuleDModule : IModule 
{ 
    private ILoggerFacade _logger; 
    private IModuleTracker _moduleTracker; 

    public ModuleDModule(ILoggerFacade logger, IModuleTracker moduleTracker) 
    { 
     _logger = logger; 
     _moduleTracker = moduleTracker; 

     _moduleTracker.ModuleConstructed("ModuleD"); 
    } 

    public void Initialize() 
    { 
     _moduleTracker.ModuleInitialized("ModuleD"); 
    } 
} 

回答

0

也許有一些與您的模塊的加載順序有關嗎?據我所見,ModuleD在ModuleD之前被加載,該ModuleD具有依賴關係。 不知道這是否對你有幫助,但這是我的第一個想法.. 你會得到哪個錯誤信息?