public IInstrumentationAttacher CreateBinder(object createdObject, object[] constructorArgs, ConfigurationReflectionCache reflectionCache) { InstrumentationListenerAttribute listenerAttribute = GetInstrumentationListenerAttribute(createdObject, reflectionCache); if (listenerAttribute == null) { return(new NoBindingInstrumentationAttacher()); } Type listenerType = listenerAttribute.ListenerType; Type listenerBinderType = listenerAttribute.ListenerBinderType; if (listenerBinderType == null) { return(new ReflectionInstrumentationAttacher(createdObject, listenerType, constructorArgs)); } return(new ExplicitInstrumentationAttacher(createdObject, listenerType, constructorArgs, listenerBinderType)); }