2017-05-04 8 views
0

좋아, 그래서 누군가가 나를 도울 수 있기를 희망하는 어셈블리에서 Ninject가 작동하는 방식에 근본적인 차이가 있다고 생각해.Ninject를 사용하는 MongoDB : 저장소의 종속성 해결

내 도메인 개체와 저장소 및 일부 서비스가 포함 된 Core.dll을 참조하는 asp.net mvc 웹 사이트가 있습니다. 내 도메인 객체는 생성자이

public class MyMessage{ 
    private IMyService _myService; 
    public MyMessage(IMyService myService) {...} 
    public void Send() { //uses IMyService } 
} 

내 저장소 그냥 IEnumerable<MyMessage>를 반환과 같은 방법이있다.

내 asp.net mcv 웹 사이트 컨트롤러에서 저장소 및 호출 주입 오전 var msg = await myRepository.GetOneAsync(id). 그런 다음 msg.send()에 전화하고 싶습니다.

내가 직면 한 문제는 _myService이 저장소에서 개체를 반환 할 때 항상 null이라는 것입니다.

는 REPOSITORY myRepositry.Get의 코드는 다음과 같습니다

에 대한 정보를 추가하는 업데이트 :

컬렉션은 IMongoCollection<MyMesage>입니다
public async Task<MyMessage> GetOneAsync(string messageId) 
=> await Collection.Find(q => q.Id == messageId).SingleOrDefaultAsync(); 

. 그래서 본질적으로 Mongo 2.0 C# 드라이버는 나를 위해 객체를 직렬화하고 있으며, Ninject가 의존성을 해결할 수 있도록 만들 수 없습니다.

DependencyResolver.Current.GetService<MyMessage>()으로 전화를 걸면 제대로 작동하지만 저장소를 통해 개체를 만들면 절대로 작동하지 않습니다.

나는 무엇을 달성하려고 노력하고 있습니까? 그렇다면 어떻게? 그렇지 않은 경우 내 옵션은 무엇입니까? 현재 나는 의존성을 만들어서 MyMessage를 해결하고 리포지토리가 반환하는 것을 기반으로 수분을 공급하고 있습니다.

덕분에,

+0

저장소는 어떻게 구현됩니까? – rexcfnghk

+1

귀하의 질문은 모든 곳에서 일종의 일종이며, 실제 정보를 제공하지는 않습니다. "저장소가 객체를 생성 할 때"정확히 무엇을 의미합니까? 저장소가 MyMessage를 어떻게 만듭니 까? –

+0

@ErikFunkenbusch가 업데이트되어 일부 정보가 저장소에 추가되었습니다. 그게 도움이 되니? –

답변

-3

아래로 _myService로는 myService을 변경해야 Ninject에이 인스턴스를 주입하기 위해 동일한 개체 이름이 필요합니다

public MyMessage(IMyService _myService) {...} 

입니다.

+0

Ninject에는이 요구 사항이 없습니다. AFAIK – rexcfnghk

+1

컨테이너에 등록 된 인터페이스와 동일한 객체 이름이지만, 예를 들어 이름이 일치하지 않아 제대로 작동합니다. –

+0

@rexcfnghk 네가 맞아, 나쁘다. – User3250