public void ExportDefaultClass(string szPath) { m_szFileBuilder.Length = 0; m_szFileBuilder.AppendLine(); foreach (Type nType in m_AllRefType.Keys) { if (m_AllExportType.ContainsKey(nType)) { continue; } if (nType.IsEnum) { PushInnerType(m_szFileBuilder, string.Empty, nType); continue; } if (nType.IsArray) { continue; } if (!nType.IsClass) { continue; } FCValueType value = FCValueType.TransType(nType); if (value.m_nTemplateType != fc_value_tempalte_type.template_none) { continue; } if (value.m_nValueType == fc_value_type.fc_value_delegate) { continue; } if (FCValueType.IsBaseType(value.m_nValueType)) { continue; } if (nType == typeof(Type)) { m_szFileBuilder.AppendLine("class Type{}"); } else if (nType == typeof(System.Object)) { m_szFileBuilder.AppendFormat("class {0}{{}}\r\n", nType.Name); } else if (nType == typeof(UnityEngine.Object)) { m_szFileBuilder.AppendLine("class UnityObject{}"); } else { m_szFileBuilder.AppendFormat("class {0} : {1}{{}}\r\n", nType.Name, nType.BaseType.Name); } m_szFileBuilder.AppendLine(); } string szPathName = szPath + "all_default_class.cs"; File.WriteAllText(szPathName, m_szFileBuilder.ToString()); }
public void ExportDefaultClass(string szPath) { m_szFileBuilder.Length = 0; m_szFileBuilder.AppendLine(); m_szFileBuilder.AppendLine("using System;"); foreach (Type nType in m_AllRefType.Keys) { if (m_AllExportType.ContainsKey(nType)) { continue; } if (nType.IsEnum) { PushInnerType(m_szFileBuilder, string.Empty, nType); continue; } if (nType.IsArray) { continue; } if (!nType.IsClass) { //if (!nType.IsValueType && !nType.IsInterface) // 如果不是结构体, 也是接口类 // continue; } FCValueType value = FCValueType.TransType(nType); if (value.m_nTemplateType != fc_value_tempalte_type.template_none) { continue; } if (value.m_nValueType == fc_value_type.fc_value_delegate) { continue; } if (FCValueType.IsBaseType(value.m_nValueType)) { continue; } // 如果是内部的类,不需要再导出了 if (FCExclude.IsDontExportClass(nType)) { continue; } //if (nType == typeof(IntPtr)) // continue; //if (nType == typeof(IEnumerator)) // continue; if (nType.Name == "T") { continue; } if (nType.Name.IndexOf("UnityEvent`") != -1) { continue; } if (nType.Name.IndexOf('&') != -1) { continue; } if (nType.Name.IndexOf('`') != -1) { continue; } if (nType == typeof(Type)) { m_szFileBuilder.AppendLine("class Type{}"); } else if (nType == typeof(System.Object)) { //m_szFileBuilder.AppendFormat("class {0}{{}}\r\n", nType.Name); continue; } else if (nType == typeof(UnityEngine.Object)) { m_szFileBuilder.AppendLine("class UnityObject{}"); } else { Type nParentType = nType.BaseType; if (nParentType != null && m_AllRefType.ContainsKey(nParentType)) { m_szFileBuilder.AppendFormat("class {0}:{1}{{}}\r\n", nType.Name, nParentType.Name); } else { m_szFileBuilder.AppendFormat("class {0}{{}}\r\n", nType.Name); } } m_szFileBuilder.AppendLine(); } string szPathName = szPath + "all_default_class.cs"; File.WriteAllText(szPathName, m_szFileBuilder.ToString()); }