Documentation
¶
Overview ¶
di implements a simple generic dependency injection container.
Sample usage:
package main
import (
"fmt"
"github.com/edgexfoundry/go-mod-bootstrap/di"
)
type foo struct {
FooMessage string
}
func NewFoo(m string) *foo {
return &foo{
FooMessage: m,
}
}
type bar struct {
BarMessage string
Foo *foo
}
func NewBar(m string, foo *foo) *bar {
return &bar{
BarMessage: m,
Foo: foo,
}
}
func main() {
container := di.NewContainer(
di.ServiceConstructorMap{
"foo": func(get di.Get) interface{} {
return NewFoo("fooMessage")
},
"bar": func(get di.Get) interface{} {
return NewBar("barMessage", get("foo").(*foo))
},
})
b := container.Get("bar").(*bar)
fmt.Println(b.BarMessage)
fmt.Println(b.Foo.FooMessage)
}
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func TypeInstanceToName ¶
func TypeInstanceToName(v interface{}) string
TypeInstanceToName converts an instance of a type to a unique name.
Types ¶
type Container ¶
type Container struct {
// contains filtered or unexported fields
}
Container is a receiver that maintains a list of services, their constructors, and their constructed instances in a thread-safe manner.
func NewContainer ¶
func NewContainer(serviceConstructors ServiceConstructorMap) *Container
NewContainer is a factory method that returns an initialized Container receiver struct.
func (*Container) Update ¶
func (c *Container) Update(serviceConstructors ServiceConstructorMap)
Set updates its internal serviceMap with the contents of the provided ServiceConstructorMap.
type ServiceConstructor ¶
type ServiceConstructor func(get Get) interface{}
ServiceConstructor defines the contract for a function/closure to create a service.
type ServiceConstructorMap ¶
type ServiceConstructorMap map[string]ServiceConstructor
ServiceConstructorMap maps a service name to a function/closure to create that service.
Click to show internal directories.
Click to hide internal directories.