В настоящее время я немного экспериментирую, используя Autofac-1.4.5.676, autofac contrib и замок DynamicProxy2. Цель состоит в том, чтобы создать грубый профилировщик, который может перехватывать вызовы конкретных методов определенного интерфейса.
Проблема: у меня все работает отлично, кроме выборочной части. Я могу ошибаться, но я думаю, что мне нужно женить свой перехватчик с реализацией IProxyGenerationHook, но я не могу понять, как это сделать.
Мой код выглядит примерно так:
Интерфейс, который нужно перехватить и профилировать (обратите внимание, что меня интересует только профилирование метода Update())
public interface ISomeSystemToMonitor
{
void Update(); // this is the one I want to profile
void SomeOtherMethodWeDontCareAboutProfiling();
}
Теперь, когда я регистрирую свои системы в контейнере, я делаю следующее:
// Register interceptor gubbins
builder.RegisterModule(new FlexibleInterceptionModule());
builder.Register<PerformanceInterceptor>();
// Register systems (just one in this example)
builder.Register<AudioSystem>()
.As<ISomeSystemToMonitor>)
.InterceptedBy(typeof(PerformanceInterceptor));
Все экземпляры ISomeSystemToMonitor, извлеченные из контейнера, перехватываются и профилируются по желанию, за исключением того факта, что он будет перехватывать все свои методы, а не только метод Update.
Теперь, как я могу расширить это, чтобы исключить все методы, кроме Update()? Как я уже сказал, я не понимаю, как я должен сообщить контейнеру, что «для ProfileInterceptor используйте эту реализацию IProxyHookGenerator».
Вся помощь приветствуется, ура! Также обратите внимание, что сейчас я не могу перейти на autofac2.x; Я застрял на 1.