bug fixed
This commit is contained in:
parent
9508895ed0
commit
d08fa9dbe7
20
registry.go
20
registry.go
|
@ -17,7 +17,7 @@ func init() {
|
|||
|
||||
// Regist is interface
|
||||
type Regist interface {
|
||||
RegisterType(t reflect.Type)
|
||||
RegisterType(t reflect.Type) error
|
||||
RegisterResource(name string, resource interface{}) error
|
||||
|
||||
GetInstance(t reflect.Type) (interface{}, error)
|
||||
|
@ -51,31 +51,31 @@ func newRegistry() Regist {
|
|||
}
|
||||
|
||||
// RegisterType is function
|
||||
func RegisterType(t reflect.Type) {
|
||||
func RegisterType(t reflect.Type) error {
|
||||
pc, _, _, ok := runtime.Caller(1)
|
||||
details := runtime.FuncForPC(pc)
|
||||
if ok && details != nil {
|
||||
log.Printf("called from %s", details.Name())
|
||||
}
|
||||
|
||||
registry.RegisterType(t)
|
||||
return registry.RegisterType(t)
|
||||
}
|
||||
|
||||
func (r *Registry) RegisterType(t reflect.Type) {
|
||||
func (r *Registry) RegisterType(t reflect.Type) error {
|
||||
if nil == t {
|
||||
log.Panicf("DI: t[reflect.Type] is nil")
|
||||
return fmt.Errorf("DI: t[reflect.Type] is nil")
|
||||
}
|
||||
if !luReflect.IsTypeKind(t, reflect.Struct, true) {
|
||||
log.Panicf("DI: t[reflect.Type] must be specified but is %v", t)
|
||||
return fmt.Errorf("DI: t[reflect.Type] must be specified but is %v", t)
|
||||
}
|
||||
|
||||
td, err := r.buildDefinition(t)
|
||||
if nil != err {
|
||||
log.Panicf("DI: %v", err)
|
||||
return fmt.Errorf("DI: %v", err)
|
||||
}
|
||||
|
||||
if _, ok := r.definitionByType[td.Type]; ok {
|
||||
log.Panicf("DI: The type[%s] of Component is exist already", td.FullName)
|
||||
return fmt.Errorf("DI: The type[%s] of Component is exist already", td.FullName)
|
||||
}
|
||||
r.definitionByType[td.Type] = td
|
||||
|
||||
|
@ -89,9 +89,11 @@ func (r *Registry) RegisterType(t reflect.Type) {
|
|||
}
|
||||
|
||||
if eTD, ok := r.definitionByName[name]; ok {
|
||||
log.Panicf("DI: The name[%s] of Component is exist already type[%s]", name, eTD.FullName)
|
||||
return fmt.Errorf("DI: The name[%s] of Component is exist already type[%s]", name, eTD.FullName)
|
||||
}
|
||||
r.definitionByName[name] = td
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func RegisterResource(name string, resource interface{}) error {
|
||||
|
|
Loading…
Reference in New Issue
Block a user