Documentation
¶
Overview ¶
Package ioc provides a reflection-based dependency injection toolkit.
Example ¶
package main import ( "fmt" "io" "strconv" "strings" "gitee.com/erdian718/ioc" ) func main() { provider, err := ioc.New(). Add(func() io.Reader { return nil }, false). Add(func() int { return 718 }, true). Add(func(c int, r io.Reader) (string, error) { bs, err := io.ReadAll(r) if err != nil { return "", err } return string(bs) + strconv.Itoa(c), nil }, false). Build() if err != nil { panic(err) } defer provider.Release() scope := provider.Create() defer scope.Release() if err := ioc.Set[io.Reader](scope, strings.NewReader("erdian")); err != nil { panic(err) } result, err := ioc.Resolve[string](scope) if err != nil { panic(err) } fmt.Println(result) }
Output: erdian718
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrInvalidCreator = errors.New("ioc: invalid creator") ErrServiceNotFound = errors.New("ioc: service not found") ErrDuplicateService = errors.New("ioc: duplicate service") ErrCyclicDependence = errors.New("ioc: cyclic dependence") )
Errors.
Functions ¶
Types ¶
type Builder ¶ added in v0.4.0
type Builder struct {
// contains filtered or unexported fields
}
Builder represents the builder for building a provider.
type Provider ¶
type Provider struct {
// contains filtered or unexported fields
}
Provider defines a mechanism for retrieving a service object.
Click to show internal directories.
Click to hide internal directories.