Ejemplo n.º 1
0
 /// <summary>
 /// 获取程序集信息
 /// </summary>
 /// <param name="assembly"></param>
 /// <returns></returns>
 private unsafe static assembly get(Assembly assembly)
 {
     if (assembly != null)
     {
         assembly value;
         if (assemblyLock.TryGetValue(assembly, out value))
         {
             return(value);
         }
         try
         {
             string fileName = assembly.Location;
             if (fileName.EndsWith(".exe", StringComparison.OrdinalIgnoreCase) || fileName.EndsWith(".dll", StringComparison.OrdinalIgnoreCase))
             {
                 if (File.Exists(fileName = fileName.Substring(0, fileName.Length - 3) + "xml"))
                 {
                     xmlNode xmlNode = fastCSharp.emit.xmlParser.Parse <xmlNode>(File.ReadAllText(fileName, Encoding.UTF8), xmlParserConfig)["members"];
                     if (xmlNode.Type == emit.xmlNode.type.Node)
                     {
                         fixed(char *nameFixed = "name")
                         {
                             value = new assembly();
                             xmlParser.attributeIndex attribute = default(xmlParser.attributeIndex);
                             foreach (keyValue <subString, xmlNode> node in xmlNode.Nodes)
                             {
                                 if (node.Value.Type == emit.xmlNode.type.Node && node.Key.Equals("member"))
                                 {
                                     if (node.Value.GetAttribute(nameFixed, 4, ref attribute) && attribute.Length > 2)
                                     {
                                         value.LoadMember(subString.Unsafe(node.Key.value, attribute.StartIndex, attribute.Length), node.Value);
                                     }
                                 }
                             }
                         }
                     }
                     else
                     {
                         log.Error.Real("XML文档解析失败 " + fileName, new System.Diagnostics.StackFrame(), false);
                     }
                 }
                 else
                 {
                     log.Default.Real("没有找到XML文档注释 " + fileName, new System.Diagnostics.StackFrame(), false);
                 }
             }
             assemblyLock.Set(assembly, value);
         }
         finally { assemblyLock.Exit(); }
         return(value);
     }
     return(null);
 }
Ejemplo n.º 2
0
            static public assembly Read(string path)
            {
                assembly ag = new assembly();

                if (File.Exists(path) == false)
                {
                    return(ag);
                }

                string[] text = File.ReadAllLines(path);

                foreach (string b in text)
                {
                    if (b.StartsWith("[") == false)
                    {
                        continue;
                    }

                    string[] ac = b.Split(":".ToCharArray());

                    if (ac.Length < 2)
                    {
                        continue;
                    }

                    string cc = ac[1].Trim();

                    if (cc.StartsWith("Assembly") == false)
                    {
                        if (cc.StartsWith("Guid") == false)
                        {
                            continue;
                        }
                    }

                    cc = cc.Replace("Assembly", "").Trim();

                    cc = cc.Replace("\"", "").Trim();

                    string[] dd = cc.Split("()\"".ToCharArray());

                    ag.Set(dd[0], dd[1]);
                }

                return(ag);
            }
Ejemplo n.º 3
0
        /// <summary>
        /// 获取参数描述
        /// </summary>
        /// <param name="method"></param>
        /// <param name="parameter"></param>
        /// <returns></returns>
        public static string Get(MethodInfo method, ParameterInfo parameter)
        {
            assembly assembly = get(method.DeclaringType.Assembly);

            return(assembly == null ? string.Empty : assembly.Get(method, parameter));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 获取方法返回值描述
        /// </summary>
        /// <param name="method"></param>
        /// <returns></returns>
        public static string GetReturn(MethodInfo method)
        {
            assembly assembly = get(method.DeclaringType.Assembly);

            return(assembly == null ? string.Empty : assembly.GetReturn(method));
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 获取属性描述
        /// </summary>
        /// <param name="property"></param>
        /// <returns></returns>
        public static string Get(PropertyInfo property)
        {
            assembly assembly = get(property.DeclaringType.Assembly);

            return(assembly == null ? string.Empty : assembly.GetSummary(property));
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 获取字段描述
        /// </summary>
        /// <param name="field"></param>
        /// <returns></returns>
        public static string Get(FieldInfo field)
        {
            assembly assembly = get(field.DeclaringType.Assembly);

            return(assembly == null ? string.Empty : assembly.GetSummary(field));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 获取类型描述
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public static string Get(Type type)
        {
            assembly assembly = get(type.Assembly);

            return(assembly == null ? string.Empty : assembly.GetSummary(type));
        }
Ejemplo n.º 8
0
 from type in SafeGetTypes(assembly)
 where typeof(IMessage).IsAssignableFrom(type)
Ejemplo n.º 9
0
 yield return(assemblyFolderFactory(assembly, currentFolder), assembly);