카테고리 없음

[씨#] IOC는 서비스 계층에 리포지토리를 등록하고 프리 엔 테이션 계층에 서비스를 등록합니다.

행복을전해요 2021. 1. 6. 11:08

IOC 컨테이너와 공유 서비스 구현을 다른 두 프로젝트에서 참조하는 세 번째 프로젝트 (클래스 라이브러리)에 넣습니다.

-------------------

각 프로젝트에 대해 StructureMap 레지스트리를 유지하여 자체 구성을 처리하는 경향이 있습니다. 내 주 프로젝트는 각 종속성에 대한 참조를 추가합니다. 내 메인에는 일반적으로 컨테이너 생성 및 구성을 담당하는 부트 스트 래퍼 클래스가 있습니다. (가능한 경우 정적 ObjectFactory를 피합니다.)

    public class ApplicationBootstraper
{
    public IContainer Container { get; set; }
    
        public ApplicationBootstraper()
            {
                    Container = new Container(x=>
                            {
                                        x.AddRegistry<SettingsRegistry>();
                                                    x.AddRegistry<ProjectRegistry>();
                                                    
                                                                //more registries go here or application specific configuration.
                                                                        });
                                                                            }
                                                                            }
                                                                            

프로젝트가 StructureMap을 인식하는 다른 프로젝트에 대한 종속성을 갖는 것과 관련하여. 버전 2.5.4에는 현재 레지스트리에 다른 레지스트리를 포함하는 기능이 추가되었습니다.

예를 들어 종속성을 가져야하는 "공통"프로젝트가 있습니다. 다음을 수행 할 수 있습니다.

    public class ProjectRegistry : Registry
{
    public ProjectRegistry()
        {
                IncludeRegistry<CommonsRegistry>();
                
                        Scan(scan =>
                                {
                                            scan.TheCallingAssembly();
                                                        scan.WithDefaultConventions();
                                                                });
                                                                    }
                                                                    }
                                                                    

도움이 되었기를 바랍니다.



출처
https://stackoverflow.com/questions/2005824