好吧,所以我認爲我有一個基本的差距如何Ninject工程跨組件,我希望有人可以幫助我。MongoDB與Ninject:解決從存儲庫中的依賴關係
我有一個asp.net mvc網站,它引用了一個包含我的域對象和我的存儲庫以及一些服務的Core.dll。我的域對象有一個構造函數和看起來像這樣
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
始終爲空。
更新,增加了信息ON REPOSITORY
爲myRepositry.Get的代碼如下所示:
public async Task<MyMessage> GetOneAsync(string messageId)
=> await Collection.Find(q => q.Id == messageId).SingleOrDefaultAsync();
其中collection是IMongoCollection<MyMesage>
。所以基本上,Mongo 2.0 C#驅動程序正在爲我序列化對象,而且我似乎無法讓Ninject在它發生時解決依賴關係。
如果我打電話DependencyResolver.Current.GetService<MyMessage>()
它工作正常,但從來沒有通過存儲庫創建對象時。
是什麼我想實現可能?如果是這樣,怎麼樣?如果不是,我有什麼選擇?目前我只是創建依賴解決MyMessage和基於庫返回水合它。
感謝,
您的存儲庫是如何實現的? – rexcfnghk
你的問題是各種各樣的地方,並沒有真正提供任何真實的信息來提出建議。 「當對象由存儲庫創建時」是什麼意思?您的存儲庫如何創建MyMessages? –
@ErikFunkenbusch已更新,以在存儲庫中添加一些信息。這有幫助嗎? –