public void OnComponentCreated(ContractIdentity identity, IComponentFactory componentFactory, Type componentTargetType, ref object componentInstance, object originalInstance) { var match = false; if (IncludedContracts != null) { match |= IncludedContracts.Match(identity.Type); } if (!match) { return; } if (!identity.Type.IsInterface) { throw new ArgumentException( "Can not create wrapper for non-interface type contracts. " + "The transaction composition listener should be configured such that " + "the non-interface type contracts do not match the wrapping criteria."); } var interceptor = new TracingInterceptor(identity.Type.Name); var callHanlder = new InterceptingAdapterEmittedTypeHanlder(componentInstance, interceptor); componentInstance = ClassEmitter.EmitInterfaceInstance(callHanlder, identity.Type); }