Vb.net 使用文本文件创建vb类。类名和属性的值应该来自数据库

Vb.net 使用文本文件创建vb类。类名和属性的值应该来自数据库,vb.net,Vb.net,我想创建一个可执行文件,它将使用文本文件作为模板,并在vb.net中创建一个类 类名及其属性存储在数据库中。用户应该能够输入类名。模板中的ClassName和AttributeName标记将被数据库中相应的值替换。 任何线索都将不胜感激。谢谢。代码文件只是文本文件。生成代码文件有点令人困惑,因为源代码显示为字符串文字,但从技术意义上讲,这并不十分困难: Sub GenerateCode() Dim dtb As New DataTable dtb.Columns.Add("C

我想创建一个可执行文件,它将使用文本文件作为模板,并在vb.net中创建一个类 类名及其属性存储在数据库中。用户应该能够输入类名。模板中的ClassName和AttributeName标记将被数据库中相应的值替换。
任何线索都将不胜感激。谢谢。

代码文件只是文本文件。生成代码文件有点令人困惑,因为源代码显示为字符串文字,但从技术意义上讲,这并不十分困难:

  Sub GenerateCode()
    Dim dtb As New DataTable
    dtb.Columns.Add("ClassName")
    dtb.Columns.Add("PropertyName")
    dtb.Columns.Add("PropertyType")
    'NOTE: datatable must be sorted by ClassName
    dtb.Rows.Add("ClassOne", "PropertyOne", "String")
    dtb.Rows.Add("ClassOne", "PropertyTwo", "Integer")
    dtb.Rows.Add("ClassOne", "PropertyThree", "String")
    dtb.Rows.Add("ClassTwo", "AnotherPropertyOne", "String")
    dtb.Rows.Add("ClassTwo", "AnotherPropertyTwo", "Integer")
    dtb.Rows.Add("ClassTwo", "AnotherPropertyThree", "String")

    Dim strFilename As String = ""
    Dim strParentFolder As String = "C:\Junk"
    If Not System.IO.Directory.Exists(strParentFolder) Then
      System.IO.Directory.CreateDirectory(strParentFolder)
    End If
    Dim strPreviousClassName As String = ""
    Dim sb As New System.Text.StringBuilder
    For Each drwProperty As DataRow In dtb.Rows
      Dim strThisClassName As String = drwProperty("ClassName").ToString
      If strThisClassName <> strPreviousClassName Then
        'class name has changed
        If strPreviousClassName > "" Then
          'write previous class
          sb.AppendLine("End Class")
          strFilename = strParentFolder & "\" & strPreviousClassName & ".vb"
          My.Computer.FileSystem.WriteAllText(strFilename, sb.ToString, False)
        End If
        'start new class
        sb = New System.Text.StringBuilder
        sb.AppendLine("Class " & strThisClassName)
        strPreviousClassName = strThisClassName
      End If
      'append property
      sb.AppendLine("  Property " & drwProperty("PropertyName").ToString & " As " & drwProperty("PropertyType").ToString)
    Next drwProperty
    'Write last class
    sb.AppendLine("End Class")
    strFilename = strParentFolder & "\" & strPreviousClassName & ".vb"
    My.Computer.FileSystem.WriteAllText(strFilename, sb.ToString, False)
  End Sub
Sub-GenerateCode()
Dim dtb作为新数据表
dtb.Columns.Add(“类名称”)
dtb.Columns.Add(“PropertyName”)
dtb.Columns.Add(“PropertyType”)
'注意:datatable必须按类名排序
添加(“ClassOne”、“PropertyOne”、“String”)
添加(“ClassOne”、“PropertyTwo”、“Integer”)
添加(“ClassOne”、“PropertyTree”、“String”)
Add(“ClassTwo”,“AnotherPropertyOne”,“String”)
Add(“ClassTwo”,“AnotherPropertyTwo”,“Integer”)
Add(“ClassTwo”,“AnotherPropertyTree”,“String”)
Dim strFilename As String=“”
Dim strParentFolder As String=“C:\Junk”
如果不存在System.IO.Directory.Exists(strParentFolder),则
System.IO.Directory.CreateDirectory(strParentFolder)
如果结束
Dim STRPREVIOUSSCLASSNAME As String=“”
将sb设置为新System.Text.StringBuilder
将每个drwProperty作为dtb.Rows中的DataRow
Dim strThisClassName As String=drwProperty(“ClassName”).ToString
如果strClassName strPreviousClassName,则
'类名已更改
如果strPreviousClassName>“”则
“写上一节课
sb.附录行(“末级”)
strFilename=strParentFolder&“\”&strPreviousClassName&“.vb”
My.Computer.FileSystem.writealText(strFilename,sb.ToString,False)
如果结束
"开新课",
sb=新System.Text.StringBuilder
sb.AppendLine(“类”和strClassName)
strPreviousClassName=strClassName
如果结束
'附加属性
sb.AppendLine(“Property”和drwProperty(“PropertyName”).ToString和“As”和drwProperty(“PropertyType”).ToString)
下一个drwProperty
“写最后一节课
sb.附录行(“末级”)
strFilename=strParentFolder&“\”&strPreviousClassName&“.vb”
My.Computer.FileSystem.writealText(strFilename,sb.ToString,False)
端接头
也许吧