Chr*_*yer 5 dependency-injection unity-container
如何将事件处理程序注入(附加)到Unity IoC容器创建的实例的.net事件?
示例:我有一个通过标准.net事件报告错误的类:
class CameraObserver
{
public event Action<Exception> UnhandledException;
[...]
}
Run Code Online (Sandbox Code Playgroud)
我有另一个负责处理这些事件的类:
class CrashMonitor
{
public static void HandleException(Exception x)
{ ... }
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是自动从CrashMonitor注入Handler到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
Run Code Online (Sandbox Code Playgroud)
有没有办法用Unity做到这一点?我可以想到一个丑陋的解决方法,比如从CameraObserver派生,带有特殊的构造函数,用于依赖注入或方法注入.但这会使系统变得更复杂(因为你必须编写代码).我天真地期望你可以在事件上添加[Dependency]属性,一切都应该有效.
我在 codeplex 的统一讨论组中问了同样的问题
http://unity.codeplex.com/Thread/View.aspx?ThreadId=80728
答案是“什么都没有”。有一个 EventBroker 的演示,但它的作用更复杂(自动装配发布者和订阅者)。我仍然认为KISS机制注入事件很有用,并开始自己做。
| 归档时间: |
|
| 查看次数: |
2609 次 |
| 最近记录: |