public DelegatingTypeGenerator(params Type[] interfaces) { _generator = new TypeGenerator(typeof(object), "Interceptor", "InterceptedObject"); foreach (var interfaceType in interfaces) { _generator.Implements(interfaceType); } _generator.AddConstructor(Constructor); _generator.AddField("__interceptionService", typeof(IDynamicImplementation), FieldAttributes.Private | FieldAttributes.InitOnly, ref __interceptionService); _generator.WhenMethodImplementationRequired(ImplementMethod); _generator.WhenPropertyImplementationRequired(ImplementProperty); _generator.WhenEventImplementationRequired(ImplementEvent); }