gpt4 book ai didi

dependency-injection - 如何使用 Unity 将事件处理程序注入(inject)事件

转载 作者:行者123 更新时间:2023-12-04 08:21:36 25 4
gpt4 key购买 nike

如何向 Unity 创建的实例的 .net 事件注入(inject)(附加)事件处理程序国际奥委会容器?

示例:我有一个通过标准 .net 事件报告错误的类:

class CameraObserver
{
public event Action<Exception> UnhandledException;
[...]
}

我有另一个负责处理这些事件的类:
class CrashMonitor
{
public static void HandleException(Exception x)
{ ... }
}

我想做的是自动将处理程序从 CrashMonitor 注入(inject)到 CameraObserver 的每个实例,就像在这个伪代码中一样:
UnityContainer container = new UnityContainer();
container.RegisterInstance<Action<Exception>>(CrashMonitor.HandleException)
.RegisterType<CameraObserver>(new InjectionEvent(UnhandledException));

var observer = container.Resolve<CameraObserver>();
// CrashMonitor.HandleException is now attached to observer.UnhandledException

有没有办法用 Unity 做到这一点?我可以想到一个丑陋的解决方法,例如从带有特殊构造函数的 CameraObserver 派生,用于依赖注入(inject)或方法注入(inject)。但这会使系统更加复杂(因为您必须编写代码)。我天真地期望您可以在事件上添加一个 [Dependency] 属性,并且一切都应该正常工作。

最佳答案

我在关于 codeplex 的统一讨论组中问过同样的问题

http://unity.codeplex.com/Thread/View.aspx?ThreadId=80728

答案是“什么都没有”。有一个 EventBroker 的演示,但它的作用更复杂(发布者和订阅者的 Autowiring )。我仍然认为注入(inject)事件的 KISS 机制很有用,并开始自己做。

关于dependency-injection - 如何使用 Unity 将事件处理程序注入(inject)事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2056763/

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