|
|
- // 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
- }
|