如何使用Ninject注入依赖项,其中实例从json反序列化

Mys*_*ter 4 asp.net dependency-injection ninject

这是我第一次尝试使用DI,我选择了ninject因为它据说很容易学习,并且有这个问题.

我正在创建这样的对象:

var registrants = JsonConvert.DeserializeObject<List<Registrant>>(input);
Run Code Online (Sandbox Code Playgroud)

我目前有这个构造函数 Registrant

[Inject]
public Registrant(IMemberRepository memberRepository)
{
    _memberRepository = memberRepository;
}
Run Code Online (Sandbox Code Playgroud)

使用Ninject将存储库依赖项注入反序列化对象的最佳方法是什么?

Rem*_*oor 6

您不能对非Ninject创建的对象使用构造函数注入(例如反序列化对象).但你可以使用属性注入.打电话吧kernel.Inject(obj)

剩下的一个问题是你想要注入这些对象的原因.通常,您不希望对数据容器对象使用依赖注入.在适当的设计中,他们不依赖于服务.需要对服务执行的操作由数据容器对象的所有者完成.我建议考虑重构你的设计.

  • +1该死的,只是重新阅读这个问题 - 这显然是正确的答案!我开始想要解释具有[Inject]属性并且期望魔法不起作用,然后在设置示例代码并在问题上看到asp.net标记时出现偏差. (2认同)