public SerializedAssemblyMember(string name, string path, string description, SerializedAssemblyMemberType type, SerializedAssemblyMemberParam[] @params)
 {
     Name        = name;
     Path        = path;
     Description = description;
     Type        = type;
     Params      = @params;
 }
        public static IEnumerable <SerializedAssemblyMember> LoadAsmXml(Assembly asm)
        {
            string xmlpath = Path.ChangeExtension(asm.Location, ".xml");
            var    members = new List <SerializedAssemblyMember>();

            if (File.Exists(xmlpath))
            {
                var    doc        = XDocument.Load(xmlpath);
                JArray objMembers = (JArray)JObject.Parse(JsonConvert.SerializeXNode(doc))["doc"]["members"]["member"];
                foreach (JObject objMember in objMembers)
                {
                    if (true || (string)objMember["@name"] == "member")
                    {
                        string objMemberName = (string)objMember["@name"];
                        var    @params       = new List <SerializedAssemblyMemberParam>();
                        string summery       = (string)objMember["summary"];
                        string returns       = (string)objMember["returns"];
                        char   mTypeChar     = objMemberName[0];
                        SerializedAssemblyMemberType mType = (SerializedAssemblyMemberType)(-1);
                        string name       = objMemberName.Substring(2);
                        string path       = "";
                        var    paramTypes = new List <string>();
                        switch (mTypeChar)
                        {
                        case 'M':
                        {
                            mType = SerializedAssemblyMemberType.Methode;
                            break;
                        }

                        case 'T':
                        {
                            mType = SerializedAssemblyMemberType.Type;
                            break;
                        }

                        case 'F':
                        {
                            mType = SerializedAssemblyMemberType.Field;
                            break;
                        }

                        case 'P':
                        {
                            mType = SerializedAssemblyMemberType.Property;
                            break;
                        }
                        }

                        int iok = name.IndexOf('(');
                        if (iok > -1)
                        {
                            name = name.Remove(iok);
                        }

                        int liop = name.LastIndexOf('.');
                        if (liop > -1)
                        {
                            path = name.Remove(liop);
                            name = name.Substring(liop + 1);
                        }

                        if (objMember.ContainsKey("param"))
                        {
                            // MsgBox(objMember.ToString)
                            var    objParams     = objMember["param"];
                            object objParamsList = new object[] { };
                            if (objParams is JArray)
                            {
                                objParamsList = objParams;
                            }
                            else if (objParams is JProperty)
                            {
                                objParamsList = new[] { objParams };
                            }

                            foreach (JObject objParam in (IEnumerable)objParamsList)
                            {
                                string paramType = "";
                                @params.Add(new SerializedAssemblyMemberParam((string)objParam["@name"], (string)objParam["#text"], paramType));
                            }
                        }

                        members.Add(new SerializedAssemblyMember(name, path, summery, mType, @params.ToArray()));
                    }
                }
            }

            return(members.ToArray());
        }