2017-05-04 13 views
0

OKこれで、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であるということです。

は、リポジトリ myRepositry.Getためのコードは次のようになります

ON情報を追加するように更新:

コレクション 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

あなたの質問はどこか一種のものであり、実際の情報を提供するものではありません。 「オブジェクトがリポジトリによって作成されたとき」とは、正確には何を意味しますか?リポジトリはどのようにMyMessagesを作成しますか? –

+0

@ErikFunkenbuschが更新され、リポジトリに関する情報が追加されました。それは役に立ちますか? –

答えて

-3

あなたは以下のよう_myServiceにmyServiceというを変更する必要があります。ninjectはインスタンスを注入するために、同じオブジェクト名を必要とするので

public MyMessage(IMyService _myService) {...} 

+0

Ninjectは、私の知る限り – rexcfnghk

+1

同じオブジェクト名限りコンテナに登録インターフェイスとして、この要件はありませんが、はい、私たちは名前を一致していない、それが正常に動作します。 –

+0

@rexcfnghkあなたは間違いなく、悪いです。 – User3250

関連する問題