method.go 501 B

12345678910111213141516171819202122232425262728
  1. package service
  2. import (
  3. "reflect"
  4. )
  5. var (
  6. typeOfBytes = reflect.TypeOf(([]byte)(nil))
  7. typeOfSession = reflect.TypeOf(NewSession(nil))
  8. )
  9. // 方法检测
  10. func isHandlerMethod(method reflect.Method) bool {
  11. mt := method.Type
  12. if method.PkgPath != "" {
  13. return false
  14. }
  15. if mt.NumIn() != 3 {
  16. return false
  17. }
  18. if t1 := mt.In(1); t1.Kind() != reflect.Ptr || t1 != typeOfSession {
  19. return false
  20. }
  21. if mt.In(2).Kind() != reflect.Ptr && mt.In(2) != typeOfBytes {
  22. return false
  23. }
  24. return true
  25. }