【问题标题】:C# code generationC#代码生成
【发布时间】:2011-04-11 16:03:57
【问题描述】:

我即将申请毕业设计 这个应用程序会以某种方式接收一个情况的描述,然后相应地生成 c# 代码

我想知道我需要在什么领域搜索或如何自动生成 C# 代码

【问题讨论】:

  • 我等不及你完成了。 “电脑,给我写无聊的代码和数据库对话!” “工作中……”“工作中……”“完成!”
  • 尝试使用您的问题标题搜索 Stack Overflow。这里已经存档了大量材料。如果有具体的qs结果,请重新发布。
  • 您能否更具体地说明它将处理的情况类型和描述?
  • @Kirk Woll,你知道 - 任何明确的解决方案 - 无论是任何形式语言、控制/数据流图、状态转换表 - 从概念上讲都可以转换为代码。

标签: c#


【解决方案1】:

如果可以,请查看Kathleen Dollard's book。她也有这个主题的website

您基本上有三个选择:

蛮力 - 在文本文件中自己创建代码文件

CodeDOM generation - MS 内置的创建代码的方式。

XSLT - Kathleen 使用什么。

【讨论】:

    【解决方案2】:

    【讨论】:

    • +1 用于 T4,我经常使用它们,一旦您知道语法,它就非常适合生成大量代码。
    【解决方案3】:

    代码DOM

    我已经对 codedom 做了一个包装。您只需要创建自己的 C# 脚本并指定所使用的类型。

    示例

    public interface IWorld
    {
        string Hello(string value);
    }
    
    string code = @"namespace MyNamespace
    {
      class Temp : IWorld
      {
          public string Hello(string value)
          {
              return "World " + value;
          }
      }
    }";
    
    Compiler compiler = new Compiler();
    compiler.AddType(typeof(string));
    compiler.Compile(code);
    var obj = compiler.CreateInstance<IWorld>();
    string result = obj.Hello("World!");
    

    请注意,这是我很久以前写的。该示例可能无法 100% 工作。 (Compiler 类确实有效,示例可能使用不正确)。

    编译器源码:http://fadd.codeplex.com/SourceControl/changeset/view/65227#925984

    反射.发射

    您也可以使用 Reflection.Emit 生成 IL:http://msdn.microsoft.com/en-us/library/3y322t50.aspx

    这有点困难但更灵活,因为 CodeDOM 会为您编译代码的每种类型生成一个新的程序集。

    【讨论】:

      【解决方案4】:

      有一组 MatLab 工具可以从状态图和数据流图生成 C/C++ 代码:

      Real Time Workshop

      Real-Time Workshop Embedded Coder

      Stateflow Coder

      你应该深入研究它。

      在您的情况下,“解决方案描述”是什么?

      【讨论】:

      • 实际上我想是这样的,您将获得一个工具来使用笔、一些框、三角形等绘制表单,应用程序将对您绘制的项目进行描述是文本框,这是一个组合框等等,然后为相应的 C# 表单生成 C# 代码简要模拟您的绘图,绘制您的表单并在 C# 中获取它,看起来很疯狂,但我仍在调查..感谢您的兴趣
      猜你喜欢
      • 2010-10-31
      • 1970-01-01
      • 2012-06-26
      • 2011-09-17
      • 1970-01-01
      • 2012-03-04
      • 1970-01-01
      • 2015-10-25
      • 2013-04-23
      相关资源
      最近更新 更多