di

package
v0.1.0-beta.7 Latest Latest
Warning

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

Go to latest
Published: Jan 13, 2025 License: Apache-2.0 Imports: 8 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrEmptyDescriptor = errors.New("empty descrptor")
)

Functions

func AddInstance

func AddInstance(
	services ServiceCollector,
	ins any,
) error

func AddInstanceFor

func AddInstanceFor[insType any, dstType any](
	services ServiceCollector,
	ins insType,
	toSelf ...bool,
) error

func AddScope

func AddScope(
	services ServiceCollector,
	creator any,
) error

func AddScopeFor

func AddScopeFor[forT any](
	services ServiceCollector,
	creator any,
	toSelf ...bool,
) error

func AddSingleton

func AddSingleton(
	services ServiceCollector,
	creator any,
) error

func AddSingletonFor

func AddSingletonFor[forT any](
	services ServiceCollector,
	creator any,
	toSelf ...bool,
) error

func GetService

func GetService[ServiceType any](provider ServiceProvider) (ServiceType, error)

func ResloveService

func ResloveService[ServiceType any](provider ServiceProvider, creator any) (ServiceType, error)

Types

type Container

type Container struct {
	Scope
	ServiceCollector
}

func New

func New() *Container

type Scope

type Scope interface {
	ServiceProvider

	CreateSubScope(id string, options ...func(ServiceCollector)) (Scope, error)
	GetSubScope(id string) (Scope, bool)
}

type ServiceCollector

type ServiceCollector interface {
	AddService(descriptor *ServiceDescriptor) error
}

type ServiceDescriptor

type ServiceDescriptor struct {
	LifeTime ServiceLifetime

	Type         reflect.Type
	DstType      reflect.Type
	SupportTypes []reflect.Type

	Instance reflect.Value
	Creator  reflect.Value
	// contains filtered or unexported fields
}

func (*ServiceDescriptor) IsSuport

func (descriptor *ServiceDescriptor) IsSuport(id string) bool

type ServiceLifetime

type ServiceLifetime int
const (
	SL_Unknown ServiceLifetime = iota
	SL_Singleton
	SL_Scoped
	SL_Transient
)

type ServiceProvider

type ServiceProvider interface {
	GetService(serviceType reflect.Type) (reflect.Value, error)
	ResloveService(creator any) (reflect.Value, error)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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