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 an 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 // 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) }
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.