// Copyright (c) Shenyang Leading Edge Intelligent Technology Co., Ltd. All rights reserved. package container import ( "errors" "fmt" "reflect" ) // 组件实例 type Instance reflect.Value var ZeroInstance = Instance(reflect.ValueOf(nil)) // 获取调用器 // 参数 // 1.服务实例 // 返回值: // 1.调用器 // 2.错误 func (instance Instance) GetCaller(methodName string) (Caller, error) { if methodName == "" { return nil, errors.New(fmt.Sprintf("方法名不能为空!")) } methodValue := reflect.Value(instance).MethodByName(methodName) if methodValue == reflect.ValueOf(nil) { return nil, errors.New(fmt.Sprintf("未找到方法!")) } return methodValue.Call, nil }