2016-12-21 5 views
1

시나리오 : 나는이 개 프로젝트를 하나 개의 솔루션을 개발의존성 삽입 (Dependency Injection)

. 하나는 웹 API 프로젝트이고 다른 하나는 저장소에 대한 클래스 라이브러리입니다.

WebAPI 프로젝트에 DI로 ninject를 추가했습니다. 이 blog은 WebAPI와 함께 ninject를 사용하도록 잘 정의되어 있습니다.

NinjectWebCommon.cs 파일의 RegisterServices 메소드에서 저장소 클래스를 구성 할 수 있습니다. 웹 API 프로젝트의 app_start 폴더에 있습니다.

명확한 설명 :

지금은 다시 내가 종속 클래스를 등록하는 웹 API 프로젝트 저장소 프로젝트의 참조를 추가하는 것이 혼란 스러워요. 그런 다음 어떻게 저장소 프로젝트에서 분리되지 않습니다.

질문 :

이 올바른 방법인가, 아니면 내가 놓친?

개념을 잘못 이해할 수 있습니까? 당신은 당신의 WebAPI 및 저장소 라이브러리 사이에 다리 3 프로젝트를 놓치고있어이

+0

코드로 구성하고 있습니다. 실제 분리를 원할 경우 1) 사용하려는 인터페이스를 정의하고 자체 프로젝트에 배치하십시오 2) 웹 사이트 및 저장소 프로젝트에서이를 참조하십시오 3) 구성 파일을 사용하여 autofac을 구성하십시오 http : //docs.autofac .org/en/latest/configuration/xml.html 이렇게하면 웹 사이트에서 저장소를 참조 할 필요가 없습니다. – Will

+0

제 생각에 요점 1은 모델을위한 별도의 프로젝트를 의미합니다. 좋아. 모델이 별도 프로젝트 인 경우 Point 2가 좋습니다. 포인트 3은 제 질문에 대한 답입니다. 확인을 통해 구성을 통해 참조를 추가 할 필요가 없습니다. 나는 웹 API로 샘플을 얻지 못했습니다. – Akhil

답변

0

을 설명 할 수있는 올바른 블로그 또는 샘플을

은 알려 주시기 바랍니다 의존성을 방지 할 수 있습니다 실행시 클래스의 발견을 확인하고주는 반영 될 수 있습니다. 일반적으로 플러그인 DLL 객체가 구현하고 WebAPI가 사용할 인터페이스가 포함되어 있습니다. 모든 WebAPI 코드는 구성을 기반으로 정확한 클래스를 제공하기 위해 DI 작업이므로 인터페이스를 사용해야합니다.

DLL을 교체하거나 새 옵션 용 DLL을 추가 할 수 있습니다. WebAPI 프로젝트는 동적으로 만들려고하는 것에 종속되어 있기 때문에 플러그인을 참조하면 안됩니다.

+0

당신은 ninject로 다른 라이브러리를 만들고 그 안에 모든 프로젝트를 참조 할 것을 의미합니다. 그래서이 새로운 ninject 라이브러리에는 모든 참조가 있고 webapi에는 ninject 참조 만 있습니다. 또한 인터페이스는 또 다른 라이브러리이며 웹 API와 ninject 라이브러리를 참조해야합니다. 내 이해가 맞습니까? – Akhil