package registry import ( "log" "reflect" "testing" "git.loafle.net/commons_go/di/annotation" cdia "git.loafle.net/commons_go/di/injection/annotation" ) func TestRegisterType(t *testing.T) { var ( err error css []interface{} cs interface{} ) RegisterType(reflect.TypeOf((*AService)(nil))) RegisterType(reflect.TypeOf((*BService)(nil))) // RegisterType(reflect.TypeOf((*TestStruct2)(nil)), &cda.ComponentAnnotation{ // Name: "test1", // }) // RegisterType(reflect.TypeOf((*TestStruct3)(nil)), &cda.ComponentAnnotation{ // Name: "test2", // }) // fs := getFields(reflect.TypeOf((*TestStruct3)(nil))) // log.Printf("%v", fs) RegisterResource("List", []string{"dfdkf", "skgkfg"}) if css, err = GetInstancesByAnnotationName(cdia.ComponentTag); nil != err { log.Printf("%v \n", err) } log.Printf("%v", css) if css, err = GetInstances([]reflect.Type{ reflect.TypeOf((*AService)(nil)), reflect.TypeOf((*BService)(nil)), }); nil != err { log.Printf("%v \n", err) } log.Printf("%v", css) if cs, err = GetInstance(reflect.TypeOf((*CService)(nil))); nil != err { log.Printf("%v \n", err) } log.Printf("%v", cs.(*CService)) } type AService struct { annotation.TypeAnnotation `annotation:"@Component(name=dkdkdf)"` NameA string } type BService struct { annotation.TypeAnnotation `annotation:"@Component()"` NameB string } type CService struct { AService *AService `annotation:"@Inject()"` BService *BService `annotation:"@Inject()"` List []string `annotation:"@Resource()"` }