func AddSingletonIProbeByObj(builder *di.Builder, obj interface{}, implementedTypes ...reflect.Type) {
	implementedTypes = append(implementedTypes, ReflectTypeIProbe)
	_logAddIProbe("SINGLETON", reflect.TypeOf(obj), _getImplementedIProbeNames(implementedTypes...),
		_logIProbeExtra{
			Name:  "DI-BY",
			Value: "obj",
		})
	di.AddSingletonWithImplementedTypesByObj(builder, obj, implementedTypes...)
}
// AddSingletonIProbeByObj adds a prebuilt obj
AddSingletonIProbeByObj adds a prebuilt obj
// AddSingletonIProbeByObj adds a prebuilt obj
func AddSingletonIProbeByObj(builder *di.Builder, obj interface{}, implementedTypes ...reflect.Type) {
	implementedTypes = append(implementedTypes, ReflectTypeIProbe)
	_logAddIProbe("SINGLETON", reflect.TypeOf(obj), _getImplementedIProbeNames(implementedTypes...),
		_logIProbeExtra{
			Name:  "DI-BY",
			Value: "obj",
		})
	di.AddSingletonWithImplementedTypesByObj(builder, obj, implementedTypes...)
}
func AddSingletonIProbeByObj ( builder * di . Builder , obj interface { } , implementedTypes ... reflect . Type ) { implementedTypes = append ( implementedTypes , ReflectTypeIProbe ) _logAddIProbe ( " " , reflect . TypeOf ( obj ) , _getImplementedIProbeNames ( implementedTypes ... ) , _logIProbeExtra { Name : " " , Value : " " , } ) di . AddSingletonWithImplementedTypesByObj ( builder , obj , implementedTypes ... ) }
AddSingletonIProbeByObj adds a prebuilt obj
AddSingletonIProbeByObj adds a prebuilt obj