Unity自动注入

发布于 2024-10-06 14:29:29 字数 274 浏览 2 评论 0 原文

我已经完成了以下操作:

  1. 注册我的记录器实例 通过 ILogger 接口统一。
  2. 创建了一个界面, ILoggableObject,有一个方法, Hook(ILogger logger),注入我的记录器。

我想实现这一点:

每次我向统一请求任何解决方案时,如果该对象实现 ILoggableObject,则通过 Hook 方法自动注入 ILogger 接口。

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

任何帮助都会很棒。

I have already done the following:

  1. Register an instance of my Logger
    in unity via a ILogger interface.
  2. Created an interface,
    ILoggableObject, that has a method,
    Hook(ILogger logger), to inject my logger.

I would like to accomplish this:

Everytime I ask for any resolution from unity, if that object implements ILoggableObject, automatically inject the ILogger interface via the Hook method.

I think this is possible via interception or policies?

Any help would be awesome.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一袭白衣梦中忆 2024-10-13 14:29:29

您正在寻找的是 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

What you are looking for is TypeInterception in Unity. See here: http://msdn.microsoft.com/en-us/library/ff660861(PandP.20).aspx

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

You want to intercept the call to the constructor and inject the Logger on behalf of the calling code without them being any wiser.

While I haven't done it before I believe you can do what you want using Intercept.NewInstance() http://msdn.microsoft.com/en-us/library/ff662093(PandP.20).aspx

迷鸟归林 2024-10-13 14:29:29

这是一种(尝试)进行依赖注入的可怕方式。请改用构造函数注入,并将 ILogger 注入(通过构造函数)到当前具有 Hook 方法的使用者中。

That is a horrible way to (attempt to) do Dependency Injection. Use Constructor Injection instead and inject (via the constructor) the ILogger into the consumer that right now has the Hook method.

你是我的挚爱i 2024-10-13 14:29:29

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

您可以考虑使用 PostSharp 或类似工具来研究面向方面的编程。这将允许您添加日志记录或其他横切关注点,而无需更改正在检测的类。

While I really like Unity and IoC/DI, I'm not sure that it is the right tool to accomplish what you want to do.

You might consider looking at aspect-oriented programming using PostSharp or a similar tool. This would allow you to add logging or other cross-cutting concerns without changing the classes being instrumented.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文