【发布时间】:2010-01-19 17:12:26
【问题描述】:
如何将事件处理程序注入(附加)到由Unity IoC 容器创建的实例的 .net 事件中?
示例:我有一个通过标准 .net 事件报告错误的类:
class CameraObserver
{
public event Action<Exception> UnhandledException;
[...]
}
我有另一个班级负责处理这些事件:
class CrashMonitor
{
public static void HandleException(Exception x)
{ ... }
}
我想做的是自动将处理程序从 CrashMonitor 注入到 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 派生,用于依赖注入或方法注入。但这会使系统更加复杂(因为您必须编写代码)。我天真地期望您可以在事件上添加一个 [Dependency] 属性,并且一切都应该正常工作。
【问题讨论】:
标签: dependency-injection unity-container