在采用reflector反编译代码的时候,字符串都被转换成unicode形式保存
从网上查了一些资料,基本都是采用内码的办法进行转换
其实可以采用很简单的办法解决,就是通过CodeDom的方法
代码如下:
从网上查了一些资料,基本都是采用内码的办法进行转换
其实可以采用很简单的办法解决,就是通过CodeDom的方法
代码如下:
1 CodeDomProvider prov = new CSharpCodeProvider();
2 CompilerParameters para = new CompilerParameters();
6 para.GenerateInMemory = true;
7 para.TreatWarningsAsErrors = false;
8 string code =
9 "namespace My{ " +
10 "public class Code " +
11 "{" +
12 " public string GetString()" +
13 " {" +
14 " string strCode = \"" + textBox1.Text + "\";" + //形式如:\u8bf7\u5148\u5b9a
15 " return strCode;" +
16 " }" +
17 "}}";
19 CompilerResults cr = prov.CompileAssemblyFromSource(para, code);
20 foreach (string s in cr.Output) {
21 System.Diagnostics.Debug.WriteLine(s);
22 }
23
24 Assembly assembly = cr.CompiledAssembly;
25 Type type = assembly.GetType("My.Code");
26 object obj = assembly.CreateInstance("My.Code");
27 string ret = type.InvokeMember("GetString", BindingFlags.InvokeMethod, null, obj, null).ToString();
2 CompilerParameters para = new CompilerParameters();
6 para.GenerateInMemory = true;
7 para.TreatWarningsAsErrors = false;
8 string code =
9 "namespace My{ " +
10 "public class Code " +
11 "{" +
12 " public string GetString()" +
13 " {" +
14 " string strCode = \"" + textBox1.Text + "\";" + //形式如:\u8bf7\u5148\u5b9a
15 " return strCode;" +
16 " }" +
17 "}}";
19 CompilerResults cr = prov.CompileAssemblyFromSource(para, code);
20 foreach (string s in cr.Output) {
21 System.Diagnostics.Debug.WriteLine(s);
22 }
23
24 Assembly assembly = cr.CompiledAssembly;
25 Type type = assembly.GetType("My.Code");
26 object obj = assembly.CreateInstance("My.Code");
27 string ret = type.InvokeMember("GetString", BindingFlags.InvokeMethod, null, obj, null).ToString();