5
如何將事件處理程序注入(附加)到由Unity IoC容器創建的實例的.net事件?如何使用Unity將事件處理程序注入到事件中
例子:我有一個通過一個標準的.NET事件報告錯誤類:
class CameraObserver
{
public event Action<Exception> UnhandledException;
[...]
}
我還有一個類,它是承擔一切處理這些事件:
class CrashMonitor
{
public static void HandleException(Exception x)
{ ... }
}
我想要做的就是自動將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
有沒有辦法用Unity做到這一點?我可以想到一個醜陋的解決方法,比如從CameraObserver派生一個特殊的構造函數intendend來進行依賴注入或者方法注入。但是這會使系統更復雜(因爲你必須編寫代碼)。我會天真地期望你可以在事件上添加一個[Dependency]屬性,一切都應該工作。
嘿,克里斯蒂安,你有沒有發現更多關於這個,或你堅持你的原定製設計?我正在嘗試使用Unity的「純粹」MVVM設計,該設計最初有一個從基本ViewModel繼承的CloseCommand,在這裏我將一個委託傳遞給一個自定義的EventHandler。工作很好,直到我試圖用Unity來注入所有東西,然後它立即崩潰。如果你有一個解決方案可以幫助我,我會非常感激一些智慧。謝謝! – 2011-06-19 13:56:18