해킹을 없애고 싶습니다. 문제의 원인은 ObjectFactory를 사용하는 방법입니다. 정말로 NancyModule 내부의 "GetInstance"에 ObjectFactory를 사용해서는 안됩니다. 대신, 저장소가 필요한 NancyModule의 생성자에 IRepository를 포함해야합니다. 그런 다음, Structuremap (부트 스트 래퍼를 사용하여 Nancy 프레임 워크에 연결됨)은 구체화 된 저장소를 인스턴스화 할 때 모듈에 간단하게 삽입합니다. 여기에 NancyModule의 예 : 여기
public class ProductModule : NancyModule {
private IRepository _repository;
public ProductModule(IRepository repository) {
_repository = repository;
SetupRoutes();
}
private void SetupRoutes() {
Get["/product/{id}"] = p => {
return _repository.Get<Product>((int)p.id);
};
}
}
이 모듈이 REPO를 얻기 위해 IOC에게 호출되지는 ... 그것은 이미 있어요. 부트 스트 래퍼가이를 가능하게합니다. 이제 ObjectFactory의 해킹 된 구성을 제거 할 수 있습니다.
일반적인 조언으로 "ObjectFactory"를 사용하여 유형을 확인하면 자신을 때리고 타이핑을 중지해야합니다. 대신, 위와 같이 생성자 삽입을 사용하여 종속성을 주입해야합니다.
'IRepository'에 대한 참조를 어디에서 얻으려고하십니까? NancyFX에서는 ObjectFactory.GetInstance()을 사용할 필요가 거의 없습니다. 'IRepository'를 사용하고있는 코드/콜 스택 샘플로 업데이트 하시겠습니까? (가능하다면 NancyModule로 시작) –
codeprogression