public ProtocolInfo(ProtocolType protocolType, OperationTypeInfo operationTypeInfo, VarAddress varAddress, string typeFullName, string operation, object[] arguments) { ProtocolType = protocolType; OperationTypeInfo = operationTypeInfo; VarAddress = varAddress; TypeFullName = typeFullName; Operation = operation; Arguments = arguments; }
static Type[] GetArgTypes(TypeFinder typeFinder, OperationTypeInfo operationTypeInfo, Type[] argTypesOri) { List <Type> argTypes = new List <Type>(); if (operationTypeInfo == null) { argTypes.AddRange(argTypesOri); } else { for (int i = 0; i < operationTypeInfo.Arguments.Length; i++) { Type type = typeFinder.GetType(operationTypeInfo.Arguments[i]); if (type == null) { throw new InformationException(string.Format(CultureInfo.CurrentCulture, ResourcesLocal.Instance.UnknownTypeInfoFormat, operationTypeInfo.Arguments[i])); } argTypes.Add(type); } if (operationTypeInfo.Arguments.Length == 1 && operationTypeInfo.Arguments[0] == typeof(object[]).ToString() && argTypesOri.Length != 1) { throw new InformationException(string.Format(CultureInfo.CurrentCulture, ResourcesLocal.Instance.ErrorOperationTypeArgInfoForObjectArrayFormat, MakeErrorInvokeArgInfo(argTypes.ToArray()), MakeErrorInvokeArgInfo(argTypesOri))); } if (argTypesOri.Length != operationTypeInfo.Arguments.Length) { throw new InformationException(string.Format(CultureInfo.CurrentCulture, ResourcesLocal.Instance.ErrorOperationTypeArgInfoFormat, MakeErrorInvokeArgInfo(argTypes.ToArray()), MakeErrorInvokeArgInfo(argTypesOri))); } } return(argTypes.ToArray()); }