CodeGen API分析
作为使用命令行界面的替代方法,开发人员可以使用核心CodeGen环境编写自定义工具或实用程序来生成代码,从而将CodeGen更紧密地集成到开发环境中。
为了实现这一点,CodeGen提供了一个.NET API,开发人员可以直接对其进行编码以生成代码。CodeGen API中的主要类有:
•CodeGen.Engine.CodeGenTaskSet
CodeGen API Example
这是使用codegen API的一个非常简单的示例。此代码段基本上与使用命令行相
同:
codegen -s CUSTOMER -t DataClass -r –v
下面是示例代码:
;;Create a new task set
data taskset = new CodeGenTaskSet()
taskset.LoggingLevel = LoggingLevel.Verbose
;;Create a task and define what it shold do
data task = new CodeGenTask()
task.Structures.Add("CUSTOMER")
task.Templates.Add("DataClass")
task.ReplaceFiles = true
;;Add the task to the task set
taskset.Tasks.Add(task)
;;Create a code generator and tell it about the
task set
data generator = new CodeGenerator(taskset)
;;Generate the code
generator.GenerateCode()
;;Did it work?
if (taskset.Complete) then
;;Good to go
else
;;Something failed!
当执行此代码时,不会看到任何事情发生,因为codegen API没有实现任何
UI。但是,如果想查看作为其处理的任务集生成的消息,可以针对其中一个注册
一个事件处理程序方法taskset.Messages.CollectionChanged或者
task.Messages.CollectionChanged并在消息生成时监视/报告这些消息。例如,如果
在控制台应用程序中,可以将消息记录到标准输出,如下所示:
lambda
messageFromTaskSet(sender, e)
begin
if
(e.Action==NotifyCollectionChangedAction.Add)
begin
data message, String
foreach message in e.NewItems
if (message!=^null)
Console.WriteLine(message)
end
end
;;Listen for
messages from the taskset as it processes
taskset.Messages.CollectionChanged += messageFromTaskSet