扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
public static CodeCompileUnit CreateExecutionClass(string typeNamespace, string typeName, string scriptBody) { // 创建CodeCompileUnit以包含代码 CodeCompileUnit ccu = new CodeCompileUnit(); // 分配需要的命名空间 CodeNamespace cns = new CodeNamespace(typeNamespace); cns.Imports.Add(new CodeNamespaceImport("System")); ccu.Namespaces.Add(cns); // 创建新的类声明 CodeTypeDeclaration parentClass = new CodeTypeDeclaration(typeName); cns.Types.Add(parentClass); // 创建获得一个参数并返回一个字符串的SayHello方法 CodeMemberMethod method = new CodeMemberMethod(); method.Name = "SayHello"; method.Attributes = MemberAttributes.Public; CodeParameterDeclarationExpression arg = new CodeParameterDeclarationExpression(typeof(string), "inputMessage"); method.Parameters.Add(arg); method.ReturnType = new CodeTypeReference(typeof(string)); // 添加方法实体需要的代码 CodeSnippetStatement methodBody =new CodeSnippetStatement(scriptBody); method.Statements.Add(methodBody); parentClass.Members.Add(method); return ccu; } CodeProvider(代码提供者) |
public static string GenerateCode(string typeNamespace, string typeName, string scriptBody) { // 调用我们前面的方法创建CodeCompileUnit CodeCompileUnit ccu = CreateExecutionClass(typeNamespace, typeName, scriptBody); CSharpCodeProvider provider = new CSharpCodeProvider(); CodeGeneratorOptions options = new CodeGeneratorOptions(); options.BlankLinesBetweenMembers = false; options.IndentString = "\t"; StringWriter sw = new StringWriter(); try { provider.GenerateCodeFromCompileUnit(ccu, sw, options); sw.Flush(); } finally { sw.Close(); } return sw.GetStringBuilder().ToString(); } |
//--------------------------------------------------------------- // <auto-generated> // 该代码是由工具生成的。 // 运行时版本:2.0.50630.0 // 更改这个文件可能导致不正确的(程序)动作并且如果代码被再次生成时将会丢掉这些更改。 // </auto-generated> //--------------------------------------------------------------- namespace CodeGuru.DynamicCode { using System; public class ScriptType { public virtual string SayHello(string inputMessage) { return inputMessage; } } } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者