[英]Using Telosys DSL model to generate code for asp.net core razor pages (solution with multiple projects)
我知道有一個asp.net mvc 代碼生成示例
Q1:我想知道如何在解決方案中將標准變量(似乎是 Java 特定的)映射到 .net 文件夾。
# -------------------------------------------
# STANDARD VARIABLES
# -------------------------------------------
# --- Folders
SRC = src/main/java
RES = src/main/resources
WEB = src/main/webapp
TEST_SRC = src/test/java
TEST_RES = src/test/resources
DOC = doc
TMP = tmp
# --- Packages
ROOT_PKG = org.foo.bar
Q2:對於如下基於 abp.io 的解決方案中的多項目解決方案,我是否需要為每個項目創建多個帶有一組模板包的 telosys 項目? 我如何處理 Telosys 配置文件中不同項目的各種路徑我可能想構建一個 Visual Studio 擴展來提取項目文件夾和命名空間並以編程方式修改 telosys 配置文件以匹配。
下面是一個開源 asp.net 核心框架abp.io可以有前端的示例(在每個項目中):Angular、MVC Razor 頁面、Blazor、
它支持多個數據庫:Entity Framework、Dapper
它的解決方案結構是這樣的:
解決方案文件的內容是這樣的(指向位於不同文件夾中的各個項目文件)
** Q3:如何使用元數據注釋排除列表表單中的屬性或將其從編輯中排除**
Q1 答案:
關於“標准變量”,它們不是特定於 Java 的(僅示例適用於 Java)。 您可以根據需要將它們用於任何類型的目標語言。 這些變量通常用在“templates.cfg”文件中來定義生成文件所在的文件夾(它們的使用不是強制性的)。
按照慣例 :
您可以根據需要組織項目結構
C# 的“templates.cfg”示例(僅使用 $SRC):
#--- Models
Entity class ; ${BEANNAME}.cs ; ${SRC}/Models/${BEANNAME} ; Models/Xxx_cs.vm ; *
Entity CreateViewModel ; Create${BEANNAME}ViewModel.cs ; ${SRC}/Models/${BEANNAME} ; Models/CreateXxxViewModel_cs.vm ; *
Entity UpdateViewModel ; Update${BEANNAME}ViewModel.cs ; ${SRC}/Models/${BEANNAME} ; Models/UpdateXxxViewModel_cs.vm ; *
#-- Controllers
Entity controller ; ${BEANNAME}sController.cs ; ${SRC}/Controllers ; Controllers/Xxxcontroller_cs.vm ; *
#-- Views
Index View ; Index.cshtml ; ${SRC}/Views/Home ; Views/Home/Index_cshtml.vm ; 1
List View ; List${BEANNAME}View.cshtml ; ${SRC}/Views/${BEANNAME}s ; Views/ListXxxView_cshtml.vm ; *
Create View ; Create${BEANNAME}View.cshtml ; ${SRC}/Views/${BEANNAME}s ; Views/CreateXxxView_cshtml.vm ; *
Update View ; Update${BEANNAME}View.cshtml ; ${SRC}/Views/${BEANNAME}s ; Views/UpdateXxxView_cshtml.vm ; *
Application Layout ; _Layout.cshtml ; ${SRC}/Views/Shared ; Views/Shared/_Layout_cshtml.vm ; 1
Q2 答案:
最簡單的方法可能是每個目標項目都有一個 Telosys 項目(使每個項目盡可能小)。
但是您也可以創建自己的“全局變量”並在具有復雜結構的“大項目”中使用它們。
特定變量定義示例(在“telosys-tools.cfg”中):
ProjectVariable.MODULE_APPLICATION = my-app
ProjectVariable.MODULE_DOMAIN = my-domaine
ProjectVariable.MODULE_INFRASTRUCTURE = my-infrastructure
“templates.cfg”文件中的用法示例:
${MODULE_INFRASTRUCTURE}/${RES}/db
${MODULE_DOMAIN}/${SRC}/repository
${MODULE_APPLICATION}/${SRC}/handler
Q3 答案:
當您需要屬性的特定信息時,最簡單的解決方案是使用“標簽”。
您可以根據需要創建任何標簽(它只是一個以“#”開頭的字符串)。
例如,對模型中的屬性使用“#exclude”標簽:
comment : string { #exclude } ;
並在模板文件中使用它:
#if ( ! $attribute.hasTag("exclude") )
use attribute here
#end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.