-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathInjectExtensions.go
29 lines (24 loc) · 1.18 KB
/
InjectExtensions.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package goioc
import "reflect"
// AddService 注册对象
func AddService[T any](con IServiceCollection, lifetime ServiceLifetime) {
t := reflect.TypeOf((*T)(nil)).Elem()
con.AddService(lifetime, t)
}
// AddServiceHandler 注册对象,并自定义如何初始化实例
func AddServiceHandler[T any](con IServiceCollection, lifetime ServiceLifetime, f func(provider IServiceProvider) interface{}) {
t := reflect.TypeOf((*T)(nil)).Elem()
con.AddServiceHandler(lifetime, t, f)
}
// AddServiceOf 注册对象,注册接口或父类型及其实现,serviceType 必须实现了 baseType
func AddServiceOf[I any, T any](con IServiceCollection, lifetime ServiceLifetime) {
i := reflect.TypeOf((*I)(nil)).Elem()
t := reflect.TypeOf((*T)(nil)).Elem()
con.AddServiceOf(lifetime, i, t)
}
// AddServiceHandlerOf 注册对象,注册接口或父类型及其实现,serviceType 必须实现了 baseType,并自定义如何初始化实例
func AddServiceHandlerOf[I any, T any](con IServiceCollection, lifetime ServiceLifetime, f func(provider IServiceProvider) interface{}) {
i := reflect.TypeOf((*I)(nil)).Elem()
t := reflect.TypeOf((*T)(nil)).Elem()
con.AddServiceHandlerOf(lifetime, i, t, f)
}