using Autofac.Extras.DynamicProxy;
using Castle.DynamicProxy;
using System.Windows.Forms;
public static void Main()
var builder = new ContainerBuilder();
var generator = new ProxyGenerator();
var myUserInterface = new MyUserInterface();
var userInterfaceProxy = generator.CreateInterfaceProxyWithTarget<IMyUserInteraface>(myUserInterface, new MyInterceptor());
builder.RegisterInstance(userInterfaceProxy).As<IMyUserInteraface>();
var container = builder.Build();
var ui = container.Resolve<IMyUserInteraface>();
public class MyInterceptor : IInterceptor
public void Intercept(IInvocation invocation)
Console.WriteLine("UI intercepted and logged");
public class MyUserInterface : Form, IMyUserInteraface
Console.WriteLine("Show something");
public interface IMyUserInteraface