本文整理汇总了C#中StringBuilder.AppendLineEx方法的典型用法代码示例。如果您正苦于以下问题:C# StringBuilder.AppendLineEx方法的具体用法?C# StringBuilder.AppendLineEx怎么用?C# StringBuilder.AppendLineEx使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StringBuilder
的用法示例。
在下文中一共展示了StringBuilder.AppendLineEx方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Generate
public static void Generate(string dir)
{
if (type.IsInterface && type != typeof(System.Collections.IEnumerator))
{
return;
}
Debugger.Log("Begin Generate lua Wrap for class {0}", className);
sb = new StringBuilder();
usingList.Add("System");
if (wrapClassName == "")
{
wrapClassName = className;
}
if (type.IsEnum)
{
GenEnum();
sb.AppendLineEx("}\r\n");
SaveFile(dir + wrapClassName + "Wrap.cs");
return;
}
List<MethodInfo> list = new List<MethodInfo>();
bool flag = false;
if (baseType != null || isStaticClass)
{
binding |= BindingFlags.DeclaredOnly;
flag = true;
}
list.AddRange(type.GetMethods(BindingFlags.Instance | binding));
for (int i = list.Count - 1; i >= 0; --i)
{
//去掉操作符函数
if (list[i].Name.StartsWith("op_") || list[i].Name.StartsWith("add_") || list[i].Name.StartsWith("remove_"))
{
if (!IsNeedOp(list[i].Name))
{
list.RemoveAt(i);
}
continue;
}
//扔掉 unity3d 废弃的函数
if (IsObsolete(list[i]))
{
list.RemoveAt(i);
}
}
PropertyInfo[] ps = type.GetProperties();
for (int i = 0; i < ps.Length; i++)
{
if (IsObsolete(ps[i]))
{
list.RemoveAll((p) => { return p == ps[i].GetGetMethod() || p == ps[i].GetSetMethod(); });
}
else
{
MethodInfo md = ps[i].GetGetMethod();
if (md != null)
{
int index = list.FindIndex((m) => { return m == md; });
if (index >= 0)
{
if (md.GetParameters().Length == 0)
{
list.RemoveAt(index);
}
else if (md.Name == "get_Item")
{
getItems.Add(md);
}
}
}
md = ps[i].GetSetMethod();
if (md != null)
{
int index = list.FindIndex((m) => { return m == md; });
if (index >= 0)
{
if (md.GetParameters().Length == 1)
{
list.RemoveAt(index);
}
else if (md.Name == "set_Item")
{
setItems.Add(md);
}
//.........这里部分代码省略.........
示例2: GenEventFunction
public static void GenEventFunction(Type t, StringBuilder sb)
{
string funcName;
string space = GetNameSpace(t, out funcName);
funcName = CombineTypeStr(space, funcName);
funcName = ConvertToLibSign(funcName);
sb.AppendLineEx("\r\n\t[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]");
sb.AppendFormat("\tstatic int {0}(IntPtr L)\r\n", funcName);
sb.AppendLineEx("\t{");
sb.AppendLineEx("\t\ttry");
sb.AppendLineEx("\t\t{");
sb.AppendLineEx("\t\t\tLuaFunction func = ToLua.CheckLuaFunction(L, 1);");
sb.AppendFormat("\t\t\tDelegate arg1 = DelegateFactory.CreateDelegate(typeof({0}), func);\r\n", GetTypeStr(t));
sb.AppendLineEx("\t\t\tToLua.Push(L, arg1);");
sb.AppendLineEx("\t\t\treturn 1;");
sb.AppendLineEx("\t\t}");
sb.AppendLineEx("\t\tcatch(Exception e)");
sb.AppendLineEx("\t\t{");
sb.AppendLineEx("\t\t\treturn LuaDLL.toluaL_exception(L, e);");
sb.AppendLineEx("\t\t}");
sb.AppendLineEx("\t}");
}
示例3: GenDelegateBody
static void GenDelegateBody(StringBuilder sb, Type t, string head)
{
MethodInfo mi = t.GetMethod("Invoke");
ParameterInfo[] pi = mi.GetParameters();
int n = pi.Length;
if (n == 0)
{
if (mi.ReturnType == typeof(void))
{
sb.AppendFormat("{0}{{\r\n{0}\tfunc.Call();\r\n{0}}}\r\n", head);
}
else
{
sb.AppendFormat("{0}{{\r\n{0}\tfunc.Call();\r\n", head);
GenLuaFunctionRetValue(sb, mi.ReturnType, head, "ret");
sb.AppendLineEx(head + "\treturn ret;");
sb.AppendFormat("{0}}}\r\n", head);
}
return;
}
sb.AppendFormat("{0}{{\r\n{0}", head);
sb.AppendLineEx("\tfunc.BeginPCall();");
for (int i = 0; i < n; i++)
{
string push = GetPushFunction(pi[i].ParameterType);
if (!IsParams(pi[i]))
{
if (pi[i].ParameterType == typeof(byte[]) && IsByteBuffer(t))
{
sb.AppendFormat("{2}\tfunc.{0}(new LuaByteBuffer(param{1}));\r\n", push, i, head);
}
else
{
sb.AppendFormat("{2}\tfunc.{0}(param{1});\r\n", push, i, head);
}
}
else
{
sb.AppendLineEx();
sb.AppendFormat("{0}\tfor (int i = 0; i < param{1}.Length; i++)\r\n", head, i);
sb.AppendLineEx(head + "\t{");
sb.AppendFormat("{2}\t\tfunc.{0}(param{1}[i]);\r\n", push, i, head);
sb.AppendLineEx(head + "\t}\r\n");
}
}
sb.AppendFormat("{0}\tfunc.PCall();\r\n", head);
if (mi.ReturnType == typeof(void))
{
for (int i = 0; i < pi.Length; i++)
{
if ((pi[i].Attributes & ParameterAttributes.Out) != ParameterAttributes.None)
{
GenLuaFunctionRetValue(sb, pi[i].ParameterType, head + "\t", "param" + i, true);
}
}
sb.AppendFormat("{0}\tfunc.EndPCall();\r\n", head);
}
else
{
GenLuaFunctionRetValue(sb, mi.ReturnType, head + "\t", "ret");
for (int i = 0; i < pi.Length; i++)
{
if ((pi[i].Attributes & ParameterAttributes.Out) != ParameterAttributes.None)
{
GenLuaFunctionRetValue(sb, pi[i].ParameterType, head + "\t", "param" + i, true);
}
}
sb.AppendFormat("{0}\tfunc.EndPCall();\r\n", head);
sb.AppendLineEx(head + "\treturn ret;");
}
sb.AppendFormat("{0}}}\r\n", head);
}
示例4: SaveFile
static void SaveFile(string file)
{
using (StreamWriter textWriter = new StreamWriter(file, false, Encoding.UTF8))
{
StringBuilder usb = new StringBuilder();
usb.AppendLineEx("//this source code was auto-generated by tolua#, do not modify it");
foreach (string str in usingList)
{
usb.AppendFormat("using {0};\r\n", str);
}
usb.AppendLineEx("using LuaInterface;");
if (ambig == ObjAmbig.All)
{
usb.AppendLineEx("using Object = UnityEngine.Object;");
}
usb.AppendLineEx();
textWriter.Write(usb.ToString());
textWriter.Write(sb.ToString());
textWriter.Flush();
textWriter.Close();
}
}
示例5: ClearLuaWraps
static void ClearLuaWraps()
{
string[] files = Directory.GetFiles(CustomSettings.saveDir, "*.cs", SearchOption.TopDirectoryOnly);
for (int i = 0; i < files.Length; i++)
{
File.Delete(files[i]);
}
ToLuaExport.Clear();
List<DelegateType> list = new List<DelegateType>();
ToLuaExport.GenDelegates(list.ToArray());
ToLuaExport.Clear();
StringBuilder sb = new StringBuilder();
sb.AppendLineEx("using System;");
sb.AppendLineEx("using LuaInterface;");
sb.AppendLineEx();
sb.AppendLineEx("public static class LuaBinder");
sb.AppendLineEx("{");
sb.AppendLineEx("\tpublic static void Bind(LuaState L)");
sb.AppendLineEx("\t{");
sb.AppendLineEx("\t}");
sb.AppendLineEx("}");
string file = CustomSettings.saveDir + "LuaBinder.cs";
using (StreamWriter textWriter = new StreamWriter(file, false, Encoding.UTF8))
{
textWriter.Write(sb.ToString());
textWriter.Flush();
textWriter.Close();
}
AssetDatabase.Refresh();
}
示例6: CreateDefaultWrapFile
static void CreateDefaultWrapFile(string path, string name)
{
StringBuilder sb = new StringBuilder();
path = path + name + ".cs";
sb.AppendLineEx("using System;");
sb.AppendLineEx("using LuaInterface;");
sb.AppendLineEx();
sb.AppendLineEx("public static class " + name);
sb.AppendLineEx("{");
sb.AppendLineEx("\tpublic static void Register(LuaState L)");
sb.AppendLineEx("\t{");
sb.AppendLineEx("\t}");
sb.AppendLineEx("}");
using (StreamWriter textWriter = new StreamWriter(path, false, Encoding.UTF8))
{
textWriter.Write(sb.ToString());
textWriter.Flush();
textWriter.Close();
}
}
示例7: GenLuaBinder
static void GenLuaBinder()
{
if (!beAutoGen && EditorApplication.isCompiling)
{
EditorUtility.DisplayDialog("警告", "请等待编辑器完成编译在执行此功能", "确定");
return;
}
allTypes.Clear();
ToLuaTree<string> tree = InitTree();
StringBuilder sb = new StringBuilder();
sb.AppendLineEx("using System;");
sb.AppendLineEx("using UnityEngine;");
sb.AppendLineEx("using LuaInterface;");
sb.AppendLineEx();
sb.AppendLineEx("public static class LuaBinder");
sb.AppendLineEx("{");
sb.AppendLineEx("\tpublic static void Bind(LuaState L)");
sb.AppendLineEx("\t{");
sb.AppendLineEx("\t\tfloat t = Time.realtimeSinceStartup;");
sb.AppendLineEx("\t\tL.BeginModule(null);");
if (File.Exists(CustomSettings.saveDir + "DelegateFactoryWrap.cs"))
{
sb.AppendLineEx("\t\tDelegateFactoryWrap.Register(L);");
}
for (int i = 0; i < allTypes.Count; i++)
{
if (allTypes[i].nameSpace == null)
{
string str = "\t\t" + allTypes[i].wrapName + "Wrap.Register(L);\r\n";
sb.Append(str);
allTypes.RemoveAt(i--);
}
}
Action<ToLuaNode<string>> begin = (node) =>
{
if (node.value == null)
{
return;
}
sb.AppendFormat("\t\tL.BeginModule(\"{0}\");\r\n", node.value);
string space = GetSpaceNameFromTree(node);
for (int i =0; i < allTypes.Count; i++)
{
if (allTypes[i].nameSpace == space)
{
string str = "\t\t" + allTypes[i].wrapName + "Wrap.Register(L);\r\n";
sb.Append(str);
allTypes.RemoveAt(i--);
}
}
};
Action<ToLuaNode<string>> end = (node) =>
{
if (node.value != null)
{
sb.AppendLineEx("\t\tL.EndModule();");
}
};
tree.DepthFirstTraversal(begin, end, tree.GetRoot());
sb.AppendLineEx("\t\tL.EndModule();");
sb.AppendLineEx("\t\tDebugger.Log(\"Register lua type cost time: {0}\", Time.realtimeSinceStartup - t);");
sb.AppendLineEx("\t}");
sb.AppendLineEx("}\r\n");
allTypes.Clear();
string file = CustomSettings.saveDir + "LuaBinder.cs";
using (StreamWriter textWriter = new StreamWriter(file, false, Encoding.UTF8))
{
textWriter.Write(sb.ToString());
textWriter.Flush();
textWriter.Close();
}
AssetDatabase.Refresh();
}
示例8: GenPreLoadFunction
static void GenPreLoadFunction(BindType bt, StringBuilder sb)
{
string funcName = "LuaOpen_" + bt.wrapName;
sb.AppendLineEx("\r\n\t[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]");
sb.AppendFormat("\tstatic int {0}(IntPtr L)\r\n", funcName);
sb.AppendLineEx("\t{");
sb.AppendLineEx("\t\ttry");
sb.AppendLineEx("\t\t{");
sb.AppendLineEx("\t\t\tLuaState state = LuaState.Get(L);");
sb.AppendFormat("\t\t\tint preTop = state.BeginPreModule(\"{0}\");\r\n", bt.nameSpace);
sb.AppendFormat("\t\t\t{0}Wrap.Register(state);\r\n", bt.wrapName);
sb.AppendLineEx("\t\t\tstate.EndPreModule(preTop);");
sb.AppendFormat("\t\t\tint reference = state.GetMetaReference(typeof({0}));\r\n", bt.name);
sb.AppendLineEx("\t\t\tLuaDLL.lua_getref(L, reference);");
sb.AppendLineEx("\t\t\treturn 1;");
sb.AppendLineEx("\t\t}");
sb.AppendLineEx("\t\tcatch(Exception e)");
sb.AppendLineEx("\t\t{");
sb.AppendLineEx("\t\t\treturn LuaDLL.toluaL_exception(L, e);");
sb.AppendLineEx("\t\t}");
sb.AppendLineEx("\t}");
}
示例9: GenLuaBinder
static void GenLuaBinder()
{
if (!beAutoGen && EditorApplication.isCompiling)
{
EditorUtility.DisplayDialog("警告", "请等待编辑器完成编译再执行此功能", "确定");
return;
}
allTypes.Clear();
ToLuaTree<string> tree = InitTree();
StringBuilder sb = new StringBuilder();
List<DelegateType> dtList = new List<DelegateType>();
List<DelegateType> list = new List<DelegateType>();
list.AddRange(CustomSettings.customDelegateList);
HashSet<Type> set = GetCustomTypeDelegates();
List<BindType> backupList = new List<BindType>();
backupList.AddRange(allTypes);
ToLuaNode<string> root = tree.GetRoot();
foreach (Type t in set)
{
if (null == list.Find((p) => { return p.type == t; }))
{
DelegateType dt = new DelegateType(t);
AddSpaceNameToTree(tree, root, dt.type.Namespace);
list.Add(dt);
}
}
sb.AppendLineEx("//this source code was auto-generated by tolua#, do not modify it");
sb.AppendLineEx("using System;");
sb.AppendLineEx("using UnityEngine;");
sb.AppendLineEx("using LuaInterface;");
sb.AppendLineEx();
sb.AppendLineEx("public static class LuaBinder");
sb.AppendLineEx("{");
sb.AppendLineEx("\tpublic static void Bind(LuaState L)");
sb.AppendLineEx("\t{");
sb.AppendLineEx("\t\tfloat t = Time.realtimeSinceStartup;");
sb.AppendLineEx("\t\tL.BeginModule(null);");
GenRegisterInfo(null, sb, list, dtList);
Action<ToLuaNode<string>> begin = (node) =>
{
if (node.value == null)
{
return;
}
sb.AppendFormat("\t\tL.BeginModule(\"{0}\");\r\n", node.value);
string space = GetSpaceNameFromTree(node);
GenRegisterInfo(space, sb, list, dtList);
};
Action<ToLuaNode<string>> end = (node) =>
{
if (node.value != null)
{
sb.AppendLineEx("\t\tL.EndModule();");
}
};
tree.DepthFirstTraversal(begin, end, tree.GetRoot());
sb.AppendLineEx("\t\tL.EndModule();");
if (CustomSettings.dynamicList.Count > 0)
{
sb.AppendLineEx("\t\tL.BeginPreLoad();");
for (int i = 0; i < CustomSettings.dynamicList.Count; i++)
{
Type t1 = CustomSettings.dynamicList[i];
BindType bt = backupList.Find((p) => { return p.type == t1; });
sb.AppendFormat("\t\tL.AddPreLoad(\"{0}\", LuaOpen_{1}, typeof({0}));\r\n", bt.name, bt.wrapName);
}
sb.AppendLineEx("\t\tL.EndPreLoad();");
}
sb.AppendLineEx("\t\tDebugger.Log(\"Register lua type cost time: {0}\", Time.realtimeSinceStartup - t);");
sb.AppendLineEx("\t}");
for (int i = 0; i < dtList.Count; i++)
{
ToLuaExport.GenEventFunction(dtList[i].type, sb);
}
if (CustomSettings.dynamicList.Count > 0)
{
for (int i = 0; i < CustomSettings.dynamicList.Count; i++)
{
Type t = CustomSettings.dynamicList[i];
BindType bt = backupList.Find((p) => { return p.type == t; });
GenPreLoadFunction(bt, sb);
}
//.........这里部分代码省略.........
示例10: Generate
public static void Generate(string dir)
{
//if (type.IsInterface)
//{
// return;
//}
Debugger.Log("Begin Generate lua Wrap for class {0}", className);
sb = new StringBuilder();
usingList.Add("System");
if (wrapClassName == "")
{
wrapClassName = className;
}
if (type.IsEnum)
{
GenEnum();
sb.AppendLineEx("}\r\n");
SaveFile(dir + wrapClassName + "Wrap.cs");
return;
}
nameCounter = new Dictionary<string, int>();
List<MethodInfo> list = new List<MethodInfo>();
if (baseType != null || isStaticClass)
{
binding |= BindingFlags.DeclaredOnly;
}
list.AddRange(type.GetMethods(BindingFlags.Instance | binding));
for (int i = list.Count - 1; i >= 0; --i)
{
GetDelegateTypeFromMethodParams(list[i]);
//先去掉操作符函数
if (list[i].Name.Contains("op_") || list[i].Name.Contains("add_") || list[i].Name.Contains("remove_"))
{
if (!IsNeedOp(list[i].Name))
{
list.RemoveAt(i);
}
continue;
}
//扔掉 unity3d 废弃的函数
if (IsObsolete(list[i]))
{
list.RemoveAt(i);
}
}
PropertyInfo[] ps = type.GetProperties();
for (int i = 0; i < ps.Length; i++)
{
int index = list.FindIndex((m) => { return m.Name == "get_" + ps[i].Name; });
if (index >= 0 && list[index].Name != "get_Item")
{
list.RemoveAt(index);
}
index = list.FindIndex((m) => { return m.Name == "set_" + ps[i].Name; });
if (index >= 0 && list[index].Name != "set_Item")
{
list.RemoveAt(index);
}
}
ProcessExtends(list);
GenBaseOpFunction(list);
methods = list.ToArray();
sb.AppendFormat("public class {0}Wrap\r\n", wrapClassName);
sb.AppendLineEx("{");
GenRegisterFunction();
GenConstructFunction();
GenTypeFunction();
GenFunctions();
GenToStringFunction();
GenIndexFunc();
GenNewIndexFunc();
GenOutFunction();
GenEventFunction();
sb.AppendLineEx("}\r\n");
//Debugger.Log(sb.ToString());
SaveFile(dir + wrapClassName + "Wrap.cs");
}
示例11: ExtractFormattedStackTrace
public static void ExtractFormattedStackTrace(StackTrace trace, StringBuilder sb, StackTrace skip = null)
{
int begin = 0;
if (skip != null && skip.FrameCount > 0)
{
MethodBase m0 = skip.GetFrame(skip.FrameCount - 1).GetMethod();
for (int i = 0; i < trace.FrameCount; i++)
{
StackFrame frame = trace.GetFrame(i);
MethodBase method = frame.GetMethod();
if (method == m0)
{
begin = i + 1;
break;
}
}
sb.AppendLineEx();
}
for (int i = begin; i < trace.FrameCount; i++)
{
StackFrame frame = trace.GetFrame(i);
MethodBase method = frame.GetMethod();
if (method == null || method.DeclaringType == null)
{
continue;
}
Type declaringType = method.DeclaringType;
string str = declaringType.Namespace;
if ( (InstantiateCount == 0 && declaringType == typeof(UnityEngine.Object) && method.Name == "Instantiate") //(method.Name == "Internal_CloneSingle"
|| (SendMsgCount == 0 && declaringType == typeof(GameObject) && method.Name == "SendMessage"))
{
break;
}
if ((str != null) && (str.Length != 0))
{
sb.Append(str);
sb.Append(".");
}
sb.Append(declaringType.Name);
sb.Append(":");
sb.Append(method.Name);
sb.Append("(");
int index = 0;
ParameterInfo[] parameters = method.GetParameters();
bool flag = true;
while (index < parameters.Length)
{
if (!flag)
{
sb.Append(", ");
}
else
{
flag = false;
}
sb.Append(parameters[index].ParameterType.Name);
index++;
}
sb.Append(")");
string fileName = frame.GetFileName();
if (fileName != null)
{
fileName = fileName.Replace('\\', '/');
sb.Append(" (at ");
if (fileName.StartsWith(projectFolder))
{
fileName = fileName.Substring(projectFolder.Length, fileName.Length - projectFolder.Length);
}
sb.Append(fileName);
sb.Append(":");
sb.Append(frame.GetFileLineNumber().ToString());
sb.Append(")");
}
if (i != trace.FrameCount - 1)
{
sb.Append("\n");
}
}
}