好的,所以我认为我对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
始终为null。
更新以在存储库中添加信息
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并根据存储库返回的内容对其进行保护。
谢谢,
答案 0 :(得分:-3)
您需要将myService更改为_myService,如下所示:
public MyMessage(IMyService _myService) {...}
因为ninject需要相同的对象名来注入实例。