gpt4 book ai didi

asp.net-mvc - Ninject - 跨程序集的依赖注入(inject)

转载 作者:行者123 更新时间:2023-12-04 20:02:32 24 4
gpt4 key购买 nike

我有一个引用六个程序集的 MVC 应用程序。每个程序集都有网站的相关组件。在某些情况下,这些程序集相互依赖。
这是一些原型(prototype)

Assembly1
---------
interface ILogger{...}

Assembly2
--------
class MyLogger : ILogger {...}

Assembly3
--------
interface IRepository {.....}

Assembly4
---------
interface MyResository : IRepository
{
[Inject]
public ILogger Logger{get;set;}
... other methods...
}

MVCApp
------

public HomeController : Controller
{
[Inject]
public ILogger Logger{get;set;}
[Inject]
public IRepository Repository{get;set;}
}

我已将所有用于 Di 解析的 Ninject 相关代码放在一个单独的程序集中,并且该程序集引用了所有其他项目。

这就是发生的事情。当 HomeController 被实例化时,我有 Logger 和 Repository 属性的有效实例。 Logger 没有依赖,完美。但是当我查看 Repository 的实例时,Logger 实例还没有被实例化。

在这种情况下如何使用 Ninject 设置 DI?

谢谢

最佳答案

我通过为 IRepository 实现提供程序解决了这个问题。在 CreateInstance 中,我通过使用内核解析 Logger 属性来实例化它。

CreateInstance(context)
{
var repo = new MyRepository();
repo.Logger = context.Kernel.Get<ILogger>();
}

奇迹般有效!

关于asp.net-mvc - Ninject - 跨程序集的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10851805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com