diff --git a/protocol/invocation/rpcinvocation.go b/protocol/invocation/rpcinvocation.go
index 5831c637fd3f7191ab27ecd53f5d13a58e44657e..505043acd1e1fdacbd940dddd851adbdec7934e5 100644
--- a/protocol/invocation/rpcinvocation.go
+++ b/protocol/invocation/rpcinvocation.go
@@ -224,7 +224,14 @@ func WithParameterTypes(parameterTypes []reflect.Type) option {
 // WithParameterTypeNames creates option with @parameterTypeNames.
 func WithParameterTypeNames(parameterTypeNames []string) option {
 	return func(invo *RPCInvocation) {
-		invo.parameterTypeNames = parameterTypeNames
+		if len(parameterTypeNames) == 0 {
+			return
+		}
+		parameterTypeNamesTmp := make([]string, len(parameterTypeNames))
+		for k, v := range parameterTypeNames {
+			parameterTypeNamesTmp[k] = v
+		}
+		invo.parameterTypeNames = parameterTypeNamesTmp
 	}
 }