di

package
v0.0.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 1, 2024 License: MIT Imports: 4 Imported by: 15

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNotSupportedType = fmt.Errorf("unsupported type")
View Source
var ErrServiceSingleton = errors.New("service is singleton, cannot use it with GetWithParams")

Functions

func Bound added in v0.0.6

func Bound(serviceAny interface{}) bool

func Exists

func Exists(serviceAny interface{}) bool

func Get

func Get(serviceAny interface{}) (interface{}, error)

func GetFullName added in v0.0.6

func GetFullName(p reflect.Type) string

func GetWithParams

func GetWithParams(serviceName string, params ...interface{}) (interface{}, error)

func InjectOn added in v0.0.6

func InjectOn(ptr interface{})

InjectOn 作用, 解析object对象内可识别的字段自动注入, 引用服务非数据安全, 需要自行管理 object 需要被注入的对象, 仅注入为nil的属性字段

func IsShare added in v0.0.6

func IsShare(serviceAny interface{}) bool

func List

func List() []string

func MustGet

func MustGet(serviceAny interface{}, params ...interface{}) interface{}

func Register added in v0.0.6

func Register(providers ...AbstractServiceProvider)

func Remove added in v0.0.6

func Remove(serviceAny interface{})

Remove 移除服务

func ResolveServiceName

func ResolveServiceName(service interface{}) string

Types

type AbstractBuilder

type AbstractBuilder interface {
	Bind(interface{}, BuildHandler) *Definition
	Singleton(interface{}, BuildHandler) *Definition
	Instance(interface{}, ...interface{}) *Definition
	Register(...AbstractServiceProvider)

	Set(interface{}, BuildHandler, bool) *Definition
	SetWithParams(interface{}, BuildWithHandler) *Definition
	Add(*Definition)
	Get(interface{}) (interface{}, error)
	GetWithParams(interface{}, ...interface{}) (interface{}, error)
	MustGet(interface{}, ...interface{}) interface{}
	GetDefinition(interface{}) (*Definition, error)
	Exists(interface{}) bool
}

func GetDefaultDI added in v0.0.6

func GetDefaultDI() AbstractBuilder

type AbstractServiceProvider added in v0.0.6

type AbstractServiceProvider interface {
	Register(AbstractBuilder)
}

type BuildHandler

type BuildHandler func(builder AbstractBuilder) (interface{}, error)

type BuildWithHandler

type BuildWithHandler func(builder AbstractBuilder, params ...interface{}) (interface{}, error)

type Definition

type Definition struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func Attempt added in v0.0.6

func Attempt(serviceAny interface{}, handler BuildHandler, singleton bool) *Definition

func Bind added in v0.0.6

func Bind(serviceAny interface{}, handler BuildHandler) *Definition

Bind 绑定非共享服务

func Instance added in v0.0.6

func Instance(serviceAny interface{}, instance ...interface{}) *Definition

func NewDefinition

func NewDefinition(name string, factory BuildHandler, shared bool) *Definition

func NewParamsDefinition

func NewParamsDefinition(name string, factory BuildWithHandler) *Definition

func Set

func Set(serviceAny interface{}, handler BuildHandler, singleton bool) *Definition

func SetWithParams

func SetWithParams(serviceAny interface{}, handler BuildWithHandler) *Definition

func (*Definition) IsResolved

func (d *Definition) IsResolved() bool

func (*Definition) IsSingleton

func (d *Definition) IsSingleton() bool

func (*Definition) ServiceName

func (d *Definition) ServiceName() string

func (*Definition) SetShared

func (d *Definition) SetShared(shared bool)

func (*Definition) SetTypeName

func (d *Definition) SetTypeName(call func() string)

func (*Definition) TypeName

func (d *Definition) TypeName() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL