2017-02-01 2 views
1

'모듈성을 통일성'이라는 프로젝트와 비슷한 코드를 작성하려고합니다. 나는 2 개의 모듈을 만들었다 : 모듈 A (코드를 통해로드 됨)와 모듈 D (디렉토리에서로드 됨). 둘 다 성공적으로로드됩니다. 내가 참고로 복용하고프리즘의 모듈 종속성

링크는 https://msdn.microsoft.com/en-us/library/ff921068(v=pandp.40).aspx 소스 코드는 위의 링크

에서 취할 수있다하지만 난 의존성을 설정하려고하면 제대로 동작하지 않습니다. 이 프로젝트에서 종속성이 어디에서 언급되는지는 실제로 알 수 없습니다. (내가 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)] 
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"); 
    } 
} 

ModuleD.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

** 없음 대답은 아직이 나를 도와 주시기 바랍니다. ** – Deepanshu

답변

0

ModuleA.cs에 ModuleDependency 특성을 추가하십시오.

[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"); 
    } 
} 
+0

을 당신의 대답은 100 % 정확하지만, 그 링크가 이동, 변경되는 경우 그것은 또한 을 100 % 쓸모가 될 수도, 또 다른 하나에 병합 메인 사이트 이 사라집니다. ** : - (** 그러므로 답을 편집하고 답안의 링크에서 관련 단계를 복사하여 의 평생 동안 100 %의 답을 보장하십시오. 이 장소! **; -) ** 언제든지 자료의 출처로 답변 하단에 링크를 남길 수 있습니다. –