Пример #1
0
        private static void BuildType(Type t, StringBuilder sb)
        {
            object[] classSpace = t.GetCustomAttributes(typeof(LuaNameSpaceAttribute), false);
            if (classSpace.Length == 0)
            {
                return;
            }
            LuaNameSpaceAttribute att = classSpace[0] as LuaNameSpaceAttribute;

            if (att == null)
            {
                return;
            }
            string fullname   = t.FullName;
            string simpleName = string.IsNullOrEmpty(att.keyName) ? t.Name : att.keyName;

            sb.AppendLine("t={}");
            sb.AppendFormat("this[\"{0}\"]=t\r\n", simpleName);
            sb.AppendFormat("t.class={0}\r\n", fullname);
            ConstructorInfo[] cs = t.GetConstructors(BindingFlags.Public | BindingFlags.Instance);
            if (cs.Length > 0)
            {
                sb.AppendFormat("t.new=function(...) return this[\"{0}\"].class(...) end\r\n", simpleName);
            }
        }
Пример #2
0
        private static void BuildMember(Type t, StringBuilder sb)
        {
            if (!t.IsClass)
            {
                return;
            }
            object[] classSpace = t.GetCustomAttributes(typeof(LuaNameSpaceAttribute), false);
            if (classSpace.Length == 0)
            {
                return;
            }
            LuaNameSpaceAttribute classAtt = classSpace[0] as LuaNameSpaceAttribute;

            if (classAtt == null)
            {
                return;
            }
            BindingFlags flag = BindingFlags.Static | BindingFlags.Public;

            MemberInfo[] methods = t.GetMembers(flag);
            foreach (MemberInfo m in methods)
            {
                object[] atts = m.GetCustomAttributes(typeof(LuaNameSpaceAttribute), false);
                if (atts.Length == 0)
                {
                    continue;
                }
                LuaNameSpaceAttribute att = atts[0] as LuaNameSpaceAttribute;
                if (att == null)
                {
                    return;
                }
                string simpleName = string.IsNullOrEmpty(att.keyName) ? m.Name : att.keyName;
                if (m is FieldInfo)
                {
                    FieldInfo f = (FieldInfo)m;
                    if (f.FieldType == typeof(string))
                    {
                        sb.AppendFormat("t.{0}=\"{1}\"\r\n", simpleName, f.GetValue(null));
                        continue;
                    }
                    if (f.FieldType.IsValueType)
                    {
                        sb.AppendFormat("t.{0}={1}\r\n", simpleName, f.GetValue(null));
                        continue;
                    }
                }
                sb.AppendFormat("t.{0}=t.class.{0}\r\n", simpleName);
            }
        }
Пример #3
0
        private static void BuildEnum(Type t, StringBuilder sb)
        {
            if (!t.IsEnum)
            {
                return;
            }
            string[] enums      = Enum.GetNames(t);
            object[] classSpace = t.GetCustomAttributes(typeof(LuaNameSpaceAttribute), false);
            if (classSpace.Length == 0)
            {
                return;
            }
            LuaNameSpaceAttribute classAtt = classSpace[0] as LuaNameSpaceAttribute;

            if (classAtt == null)
            {
                return;
            }
            foreach (var m in enums)
            {
                string up = EditGUITools.GetUpperCase(m, true);
                sb.AppendFormat("t.{0}=t.class.{1}\r\n", up, m);
            }
        }