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.