 Documentation
      ¶
      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.