好吧,所以我认为我有一个基本的差距如何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已更新,以在存储库中添加一些信息。这有帮助吗? –