2013-03-27 2 views
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

아마도 모듈이로드되는 순서와 관련이 있습니까? 내가 아는 한 모듈 A는 종속성이있는 ModuleD가로드되기 전에로드됩니다. 그게 도움이되는지 모르겠지만 그게 내 첫 생각 이었어. 어떤 오류 메시지가 나나요?