Skip to content

Repository files navigation

inject

-- import "github.com/codegangsta/inject"

Package inject provides utilities for mapping and injecting dependencies in various ways.

Language Translations:

Usage

func InterfaceOf

funcInterfaceOf(valueinterface{}) reflect.Type

InterfaceOf dereferences a pointer to an Interface type. It panics if value is not an pointer to an interface.

type Applicator

typeApplicatorinterface {
// 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 Injector

typeInjectorinterface {
ApplicatorInvokerTypeMapper// 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.

func New

funcNew() Injector

New returns a new Injector.

type Invoker

typeInvokerinterface {
// 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

typeTypeMapperinterface {
// Maps the interface{} value based on its immediate type from reflect.TypeOf.Map(interface{}) TypeMapper// 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// 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// Returns the Value that is mapped to the current type. Returns a zeroed Value if// the Type has not been mapped.Get(reflect.Type) reflect.Value
}

TypeMapper represents an interface for mapping interface{} values based on type.

About

Dependency injection for go

Resources

Stars

976 stars

Watchers

33 watching

Forks

Releases

Packages

Used by

Contributors

Languages