Documentation
¶
Overview ¶
Package inject provides utilities for mapping and injecting dependencies in various ways.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func InterfaceOf ¶
InterfaceOf dereferences a pointer to an Interface type. It panics if value is not a pointer to an interface.
func IsFastInvoker ¶
func IsFastInvoker(handler interface{}) bool
IsFastInvoker returns true if the `handler` implements FastInvoker.
Types ¶
type Applicator ¶
type Applicator interface {
// Apply maps dependencies in the Type map to each field in the struct that is
// tagged with "inject". Returns an error if the injection fails.
Apply(interface{}) error
}
Applicator represents an interface for mapping dependencies to a struct.
type FastInvoker ¶
type FastInvoker interface {
// Invoke attempts to call the `interface{}` provided as interface method,
// providing dependencies for function arguments based on Type. Returns a slice
// of reflect.Value representing the returned values of the function. Returns an
// error if the injection fails.
Invoke([]interface{}) ([]reflect.Value, error)
}
FastInvoker represents an interface in order to avoid the calling function via reflection.
type Injector ¶
type Injector interface {
Applicator
Invoker
TypeMapper
Provider
// SetParent sets the parent of the injector. If the injector cannot find a
// dependency in its Type map it will check its parent before returning an
// error.
SetParent(Injector)
GetParent() Injector
}
Injector represents an interface for mapping and injecting dependencies into structs and function arguments.
type Invoker ¶
type Invoker interface {
// Invoke attempts to call the `interface{}` provided as a function, providing
// dependencies for function arguments based on Type. Returns a slice of
// reflect.Value representing the returned values of the function. Returns an
// error if the injection fails.
Invoke(interface{}) ([]reflect.Value, error)
}
Invoker represents an interface for calling functions via reflection.
type TypeMapper ¶
type TypeMapper interface {
// Map maps the `interface{}` values based on their immediate type from
// reflect.TypeOf.
Map(...interface{}) TypeMapper
// MapTo maps the `interface{}` value based on the pointer of an Interface
// provided. This is really only useful for mapping a value as an interface, as
// interfaces cannot at this time be referenced directly without a pointer.
MapTo(interface{}, interface{}) TypeMapper
// Set provides a possibility to directly insert a mapping based on type and
// value. This makes it possible to directly map type arguments not possible to
// instantiate with reflect like unidirectional channels.
Set(reflect.Type, reflect.Value) TypeMapper
// Value returns the reflect.Value that is mapped to the reflect.Type. It
// returns a zeroed reflect.Value if the Type has not been mapped.
Value(reflect.Type) reflect.Value
}
TypeMapper represents an interface for mapping `interface{}` values based on type.