Exemple #1
0
        /// <summary>
        /// 通过客户端传过来的方法调用信息获取方法的动态调用器
        /// </summary>
        /// <param name="invokeInfo">The invoke info.</param>
        /// <returns></returns>
        public MethodInfo GetMethod(MethodInvokeInfo invokeInfo)
        {
            if (!methodInvokers.ContainsKey(invokeInfo))
            {
                MethodInfo method = invokeInfo.GetGenericMethod();
                if (method == null)
                {
                    throw new ArgumentException(String.Format("无此泛型方法 \"{0}\" 定义", invokeInfo.Name));
                }

                methodInvokers.Add(invokeInfo, method);
            }
            return(methodInvokers[invokeInfo]);
        }
        /// <summary>
        /// ͨ���ͻ��˴������ķ���������Ϣ��ȡ�����Ķ�̬������
        /// </summary>
        /// <param name="invokeInfo">The invoke info.</param>
        /// <returns></returns>
        public MethodInfo GetMethod(MethodInvokeInfo invokeInfo)
        {
            if (!methodInvokers.ContainsKey(invokeInfo)) {
                MethodInfo method = invokeInfo.GetGenericMethod();
                if (method == null)
                    throw new ArgumentException(String.Format("�޴˷��ͷ��� \"{0}\" ����", invokeInfo.Name));

                methodInvokers.Add(invokeInfo, method);
            }
            return methodInvokers[invokeInfo];
        }
 /// <summary>
 /// ����Զ�̹��̵��ð�
 /// </summary>
 /// <param name="package">The package.</param>
 /// <param name="encryptKey">The encrypt key.</param>
 /// <param name="invokeInfo">The invoke info.</param>
 public static void DecodeInvoke(NetworkInvokePackage package, string encryptKey, out MethodInvokeInfo invokeInfo, out object[] parameters)
 {
     invokeInfo = serializer.Deserialize<MethodInvokeInfo>(SecurityUtility.DESDecrypt((byte[])package.Context[METHOD_INVOKEINFO], encryptKey));
     parameters = serializer.Deserialize<object[]>(SecurityUtility.DESDecrypt((byte[])package.Context[METHOD_PARAMETERS], encryptKey));
 }