Ejemplo n.º 1
0
        static void ExtractMethodInfo(Hashtable methods, MethodInfo mi)
        {
            XmlRpcMethodAttribute attr = (XmlRpcMethodAttribute)
                                         Attribute.GetCustomAttribute(mi,
                                                                      typeof(XmlRpcMethodAttribute));

            if (attr == null)
            {
                return;
            }

            XmlRpcMethodInfo mthdInfo = (XmlRpcMethodInfo)methods[mi.Name];

            if (mthdInfo == null)
            {
                mthdInfo = new XmlRpcMethodInfo();
                methods.Add(mi.Name, mthdInfo);
            }

            mthdInfo.MethodInfo = mi;
            mthdInfo.XmlRpcName = GetXmlRpcMethodName(mi);
            mthdInfo.MiName     = mi.Name;
            mthdInfo.Doc        = attr.Description;
            mthdInfo.IsHidden   = attr.IntrospectionMethod | attr.Hidden;
            // extract parameters information
            ArrayList parmList = new ArrayList();

            ParameterInfo[] parms = mi.GetParameters();
            foreach (ParameterInfo parm in parms)
            {
                XmlRpcParameterInfo parmInfo = new XmlRpcParameterInfo();
                parmInfo.Name       = parm.Name;
                parmInfo.Type       = parm.ParameterType;
                parmInfo.XmlRpcType = GetXmlRpcTypeString(parm.ParameterType);
                // retrieve optional attributed info
                parmInfo.Doc = "";
                XmlRpcParameterAttribute pattr = (XmlRpcParameterAttribute)
                                                 Attribute.GetCustomAttribute(parm,
                                                                              typeof(XmlRpcParameterAttribute));
                if (pattr != null)
                {
                    parmInfo.Doc        = pattr.Description;
                    parmInfo.XmlRpcName = pattr.Name;
                }
                parmList.Add(parmInfo);
            }
            mthdInfo.Parameters = (XmlRpcParameterInfo[])
                                  parmList.ToArray(typeof(XmlRpcParameterInfo));
            // extract return type information
            mthdInfo.ReturnType       = mi.ReturnType;
            mthdInfo.ReturnXmlRpcType = GetXmlRpcTypeString(mi.ReturnType);
            object[] orattrs = mi.ReturnTypeCustomAttributes.GetCustomAttributes(
                typeof(XmlRpcReturnValueAttribute), false);
            if (orattrs.Length > 0)
            {
                mthdInfo.ReturnDoc = ((XmlRpcReturnValueAttribute)orattrs[0]).Description;
            }
        }
Ejemplo n.º 2
0
    static void ExtractMethodInfo(Dictionary<string, XmlRpcMethodInfo> methods, 
      MethodInfo mi, Type type)
    {
      XmlRpcMethodAttribute attr = (XmlRpcMethodAttribute)
        Attribute.GetCustomAttribute(mi,
        typeof(XmlRpcMethodAttribute));
      if (attr == null)
        return;
      XmlRpcMethodInfo mthdInfo = new XmlRpcMethodInfo();
      mthdInfo.MethodInfo = mi;
      mthdInfo.XmlRpcName = GetXmlRpcMethodName(mi);
      mthdInfo.MiName = mi.Name;
      mthdInfo.Doc = attr.Description;
      mthdInfo.IsHidden = attr.IntrospectionMethod | attr.Hidden;
      // extract parameters information
      var parmList = new List<XmlRpcParameterInfo>();
      ParameterInfo[] parms = mi.GetParameters();
      foreach (ParameterInfo parm in parms)
      {
        XmlRpcParameterInfo parmInfo = new XmlRpcParameterInfo();
        parmInfo.Name = parm.Name;
        parmInfo.Type = parm.ParameterType;
        parmInfo.XmlRpcType = GetXmlRpcTypeString(parm.ParameterType);
        // retrieve optional attributed info
        parmInfo.Doc = "";
        XmlRpcParameterAttribute pattr = (XmlRpcParameterAttribute)
          Attribute.GetCustomAttribute(parm,
          typeof(XmlRpcParameterAttribute));
        if (pattr != null)
        {
          parmInfo.Doc = pattr.Description;
          parmInfo.XmlRpcName = pattr.Name;
        }
        parmInfo.IsParams = Attribute.IsDefined(parm,
          typeof(ParamArrayAttribute));
        parmList.Add(parmInfo);
      }
      mthdInfo.Parameters = parmList.ToArray();
      // extract return type information
      mthdInfo.ReturnType = mi.ReturnType;
      mthdInfo.ReturnXmlRpcType = GetXmlRpcTypeString(mi.ReturnType);
      object[] orattrs = mi.ReturnTypeCustomAttributes.GetCustomAttributes(
        typeof(XmlRpcReturnValueAttribute), false);
      if (orattrs.Length > 0)
      {
        mthdInfo.ReturnDoc = ((XmlRpcReturnValueAttribute)orattrs[0]).Description;
      }

      if (methods.ContainsKey(mthdInfo.XmlRpcName))
      {
        throw new XmlRpcDupXmlRpcMethodNames(String.Format("Method "
          + "{0} in type {1} has duplicate XmlRpc method name {2}",
          mi.Name, type.Name, mthdInfo.XmlRpcName));
      }
      else
        methods.Add(mthdInfo.XmlRpcName, mthdInfo);
    }
Ejemplo n.º 3
0
        static void ExtractMethodInfo(Dictionary <string, XmlRpcMethodInfo> methods,
                                      MethodInfo mi, Type type)
        {
            XmlRpcMethodAttribute attr = (XmlRpcMethodAttribute)
                                         Attribute.GetCustomAttribute(mi,
                                                                      typeof(XmlRpcMethodAttribute));

            if (attr == null)
            {
                return;
            }
            XmlRpcMethodInfo mthdInfo = new XmlRpcMethodInfo();

            mthdInfo.MethodInfo = mi;
            mthdInfo.XmlRpcName = XmlRpcTypeInfo.GetXmlRpcMethodName(mi);
            mthdInfo.MiName     = mi.Name;
            mthdInfo.Doc        = attr.Description;
            mthdInfo.IsHidden   = attr.IntrospectionMethod | attr.Hidden;
            // extract parameters information
            var parmList = new List <XmlRpcParameterInfo>();

            ParameterInfo[] parms = mi.GetParameters();
            foreach (ParameterInfo parm in parms)
            {
                XmlRpcParameterInfo parmInfo = new XmlRpcParameterInfo();
                parmInfo.Name       = parm.Name;
                parmInfo.Type       = parm.ParameterType;
                parmInfo.XmlRpcType = XmlRpcTypeInfo.GetXmlRpcTypeString(parm.ParameterType);
                // retrieve optional attributed info
                parmInfo.Doc = "";
                XmlRpcParameterAttribute pattr = (XmlRpcParameterAttribute)
                                                 Attribute.GetCustomAttribute(parm,
                                                                              typeof(XmlRpcParameterAttribute));
                if (pattr != null)
                {
                    parmInfo.Doc        = pattr.Description;
                    parmInfo.XmlRpcName = pattr.Name;
                }
                parmInfo.IsParams = Attribute.IsDefined(parm,
                                                        typeof(ParamArrayAttribute));
                parmList.Add(parmInfo);
            }
            mthdInfo.Parameters = parmList.ToArray();
            // extract return type information
            mthdInfo.ReturnType       = mi.ReturnType;
            mthdInfo.ReturnXmlRpcType = XmlRpcTypeInfo.GetXmlRpcTypeString(mi.ReturnType);
            object[] orattrs = mi.ReturnTypeCustomAttributes.GetCustomAttributes(
                typeof(XmlRpcReturnValueAttribute), false);
            if (orattrs.Length > 0)
            {
                mthdInfo.ReturnDoc = ((XmlRpcReturnValueAttribute)orattrs[0]).Description;
            }

            if (methods.ContainsKey(mthdInfo.XmlRpcName))
            {
                throw new XmlRpcDupXmlRpcMethodNames(String.Format("Method "
                                                                   + "{0} in type {1} has duplicate XmlRpc method name {2}",
                                                                   mi.Name, type.Name, mthdInfo.XmlRpcName));
            }
            else
            {
                methods.Add(mthdInfo.XmlRpcName, mthdInfo);
            }
        }
Ejemplo n.º 4
0
        private static void ExtractMethodInfo(Hashtable methods, MethodInfo mi, Type type)
        {
            var attr = (XmlRpcMethodAttribute)
                       Attribute.GetCustomAttribute(mi,
                                                    typeof(XmlRpcMethodAttribute));

            if (attr == null)
            {
                return;
            }
            var mthdInfo = new XmlRpcMethodInfo
            {
                MethodInfo = mi,
                XmlRpcName = GetXmlRpcMethodName(mi),
                MiName     = mi.Name,
                Doc        = attr.Description,
                IsHidden   = attr.IntrospectionMethod | attr.Hidden
            };
            // extract parameters information
            var parmList = new List <XmlRpcParameterInfo>();
            var parms    = mi.GetParameters();

            foreach (var parm in parms)
            {
                var parmInfo = new XmlRpcParameterInfo
                {
                    Name       = parm.Name,
                    Type       = parm.ParameterType,
                    XmlRpcType = GetXmlRpcTypeString(parm.ParameterType),
                    // retrieve optional attributed info
                    Doc = ""
                };
                var pattr = (XmlRpcParameterAttribute)
                            Attribute.GetCustomAttribute(parm,
                                                         typeof(XmlRpcParameterAttribute));
                if (pattr != null)
                {
                    parmInfo.Doc        = pattr.Description;
                    parmInfo.XmlRpcName = pattr.Name;
                }
                parmInfo.IsParams = Attribute.IsDefined(parm,
                                                        typeof(ParamArrayAttribute));
                parmList.Add(parmInfo);
            }
            mthdInfo.Parameters = parmList.ToArray();
            // extract return type information
            mthdInfo.ReturnType       = mi.ReturnType;
            mthdInfo.ReturnXmlRpcType = GetXmlRpcTypeString(mi.ReturnType);
            var orattrs = mi.ReturnTypeCustomAttributes.GetCustomAttributes(
                typeof(XmlRpcReturnValueAttribute), false);

            if (orattrs.Length > 0)
            {
                mthdInfo.ReturnDoc = ((XmlRpcReturnValueAttribute)orattrs[0]).Description;
            }

            if (methods[mthdInfo.XmlRpcName] != null)
            {
                throw new XmlRpcDupXmlRpcMethodNames(string.Format("Method "
                                                                   + "{0} in type {1} has duplicate XmlRpc method name {2}",
                                                                   mi.Name, type.Name, mthdInfo.XmlRpcName));
            }
            else
            {
                methods.Add(mthdInfo.XmlRpcName, mthdInfo);
            }
        }
Ejemplo n.º 5
0
        static void ExtractMethodInfo(Hashtable methods, MethodInfo mi)
        {
            XmlRpcMethodAttribute attr = (XmlRpcMethodAttribute)
            Attribute.GetCustomAttribute(mi,
            typeof(XmlRpcMethodAttribute));
              if (attr == null)
            return;

              XmlRpcMethodInfo mthdInfo = (XmlRpcMethodInfo)methods[mi.Name];
              if (mthdInfo == null)
              {
            mthdInfo = new XmlRpcMethodInfo();
            methods.Add(mi.Name, mthdInfo);
              }

              mthdInfo.MethodInfo = mi;
              mthdInfo.XmlRpcName = GetXmlRpcMethodName(mi);
              mthdInfo.MiName = mi.Name;
              mthdInfo.Doc = attr.Description;
              mthdInfo.IsHidden = attr.IntrospectionMethod | attr.Hidden;
              // extract parameters information
              ArrayList parmList = new ArrayList();
              ParameterInfo[] parms = mi.GetParameters();
              foreach (ParameterInfo parm in parms)
              {
            XmlRpcParameterInfo parmInfo = new XmlRpcParameterInfo();
            parmInfo.Name = parm.Name;
            parmInfo.Type = parm.ParameterType;
            parmInfo.XmlRpcType = GetXmlRpcTypeString(parm.ParameterType);
            // retrieve optional attributed info
            parmInfo.Doc = "";
            XmlRpcParameterAttribute pattr = (XmlRpcParameterAttribute)
              Attribute.GetCustomAttribute(parm,
              typeof(XmlRpcParameterAttribute));
            if (pattr != null)
            {
              parmInfo.Doc = pattr.Description;
              parmInfo.XmlRpcName = pattr.Name;
            }
            parmInfo.IsParams = Attribute.IsDefined(parm,
              typeof(ParamArrayAttribute));
            parmList.Add(parmInfo);
              }
              mthdInfo.Parameters = (XmlRpcParameterInfo[])
            parmList.ToArray(typeof(XmlRpcParameterInfo));
              // extract return type information
              mthdInfo.ReturnType = mi.ReturnType;
              mthdInfo.ReturnXmlRpcType = GetXmlRpcTypeString(mi.ReturnType);
              object[] orattrs = mi.ReturnTypeCustomAttributes.GetCustomAttributes(
            typeof(XmlRpcReturnValueAttribute), false);
              if (orattrs.Length > 0)
              {
            mthdInfo.ReturnDoc = ((XmlRpcReturnValueAttribute)orattrs[0]).Description;
              }
        }