Как добавить (прикрепить) обработчики событий к событиям .net экземпляров, созданных контейнером IoC Unity ?
Пример: у меня есть класс, который сообщает об ошибках через стандартное событие .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] к событию, и все должно работать.