1. Purpose
Use code and templates to generate object code files respectively.
Methods mainly include file reading and writing, code generation functions, and application programs.
2. File reading and writing functions
/// <summary> /// Write text file /// </summary> /// <param name="path"></param> /// <param name="str"></param> public static void WriteTxt(string path, string str) { using (StreamWriter writer = new StreamWriter(path, true)) { (str); (); } } /// <summary> /// Read text file /// </summary> /// <param name="path"></param> /// <returns></returns> public static string ReadTxt(string path) { try { if (!(path)) { return null; } string str = ; using (FileStream fs = new FileStream(path, , )) { using (StreamReader sr = new StreamReader(fs)) { str=(); (); } (); } return str; } catch (Exception e) { (); return null; } }
3. Code generation function
/// <summary> /// Code generator (total generation) /// </summary> /// <param name="space"></param> /// <param name="name"></param> public static void CsharpGenerate(string space,string name) { StringBuilder sb = new StringBuilder(); ("using System;\n" + $"namespace {space}\n" + "{\n" + $" public class {name}" + " {\n" + " private string name;\n" + " public void function(string str)\n" + " {\n" + " (str);\n" + " }\n" + " }\n"+ "}\n"); WriteTxt("E:\\", ()); } /// <summary> /// Code generator (branch generation) /// </summary> /// <param name="space"></param> /// <param name="name"></param> public static void CsharpGenerateSplit(string space, string name) { StringBuilder sb = new StringBuilder(); ("using System;\n"); ($"namespace {space}\n"); ("{\n"); ($" public class {name}"); (" {\n"); (" private string name;\n"); (" public void function(string str)\n"); (" {\n"); (" (str);\n"); (" }\n"); (" }\n"); ("}\n"); WriteTxt("E:\\", ()); } /// <summary> /// Code generator (template generation) /// </summary> /// <param name="space"></param> /// <param name="name"></param> public static void CsharpGenerateTemplate(string space, string name) { string str = ReadTxt("E:\\"); str = ("Demo", space); str = ("Test", name); WriteTxt("E:\\", str); }
4. Application
static void Main(string[] args) { //CsharpGenerate("Demo", "Test"); //CsharpGenerateSplit("Demo", "Test"); CsharpGenerateTemplate("Nature", "Develop"); }
5. Effect
document
using System; namespace Demo { public class Test { private string name; public void function(string str) { (str); } } }
document
using System; namespace Demo { public class Test { private string name; public void function(string str) { (str); } } }
document
using System; namespace Nature { public class Develop { private string name; public void function(string str) { (str); } } }
This is the end of this article about explaining the implementation principles of C# code generators in detail. For more related C# code generator content, please search for my previous articles or continue browsing the related articles below. I hope everyone will support me in the future!