Unity自动注射

时间:2010-12-06 16:05:39

标签: c# dependency-injection unity-container

我已经完成了以下工作:

  1. 注册我的Logger实例 通过ILogger接口统一。
  2. 创建了一个界面, ILoggableObject,有一个方法, 挂钩(ILogger记录器),注入我的记录器。
  3. 我想做到这一点:

    每当我要求统一的任何解析时,如果该对象实现ILoggableObject,则通过Hook方法自动注入ILogger接口。

    我认为这可以通过拦截或政策来实现吗?

    任何帮助都会很棒。

3 个答案:

答案 0 :(得分:2)

您正在寻找的是Unity中的TypeInterception。见这里:http://msdn.microsoft.com/en-us/library/ff660861(PandP.20).aspx

此处http://msdn.microsoft.com/en-us/library/ff660848(v=PandP.20).aspx

您希望拦截对构造函数的调用,并代表调用代码注入Logger,而不会更明智。

虽然我之前没有这样做,但我相信你可以使用Intercept.NewInstance()http://msdn.microsoft.com/en-us/library/ff662093(PandP.20).aspx

做你想做的事。

答案 1 :(得分:1)

这是(尝试)执行依赖注入的一种可怕方式。使用构造函数注入代替并将ILogger注入(通过构造函数)到现在具有Hook方法的使用者。

答案 2 :(得分:0)

虽然我非常喜欢Unity和IoC / DI,但我不确定它是否是完成您想要做的事情的正确工具。

您可以考虑使用PostSharp或类似工具查看面向方面的编程。这将允许您在不更改正在检测的类的情况下添加日志记录或其他横切关注点。