⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clscsharpcoder.cls

📁 一个由VB开发的。NET实体生成器` 提高.net代码质量及开发效率
💻 CLS
📖 第 1 页 / 共 3 页
字号:
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "clsCSharpCoder"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False

Private adtAdoType As AdoNetType
Private AdoName As String
Private XMLSource As String
Private sNameSpace As String
Public Event InitCompleted(ByVal MaxValue As Long)
Public Event ExportStep(ByVal Value As Long)
Public Event ExportCompleted()
Public Event ExportingClass(ByVal ClassName As String)
Public Event ClassExported(ByVal ClassName As String)
Public Event MakingExtends(Cancel As Boolean)   '正在输出扩展实体类

Public Sub Init(ByVal AdoType As AdoNetType, ByVal SrcXmlPath As String, ByVal NameSpace As String)
    Dim tmpText As String
    adtAdoType = AdoType
    XMLSource = ""
    sNameSpace = NameSpace
    Open SrcXmlPath For Input As #1
        While Not EOF(1)
            tmpText = ""
            Input #1, tmpText
            XMLSource = XMLSource & tmpText & vbCrLf
        Wend
    Close #1
    
    If adtAdoType = OleDb Then
        AdoName = "OleDb"
    ElseIf adtAdoType = Sql Then
        AdoName = "Sql"
    End If
End Sub

Private Sub MakeFolders(Path As String, DetailsPath As String, BasePath As String, EntityBasePath As String, _
    QPCPath As String, SPCPath As String)
On Error Resume Next
    Call MkDir(DetailsPath)     '创建文件夹
    Call MkDir(BasePath)        '创建文件夹
    Call MkDir(EntityBasePath)  '创建文件夹
    Call MkDir(QPCPath)  '创建文件夹
    Call MkDir(SPCPath)  '创建文件夹
End Sub

Public Sub ExportCode(ByVal Path As String)
    Dim Conn As String
    Dim Doc As New DOMDocument
    Dim DetailsPath As String       '实体描述路径
    Dim BasePath As String          '基类路径
    Dim EntityBasePath As String    '基础实体路径
    Dim QPCPath As String    'PQC路径
    Dim SPCPath As String    'SQC路径
    
    Dim Codes As String
    Dim strName As String
    Dim ClassName As String
    Dim ObjectName As String
    Dim ID As String
    Dim IDType As String
    
    Doc.loadXML XMLSource
    DetailsPath = Path & "\Details"
    BasePath = Path & "\Base"
    EntityBasePath = Path & "\EntityBase"
    QPCPath = Path & "\Base\QPC"
    SPCPath = Path & "\Base\SPC"
    MakeFolders Path, DetailsPath, BasePath, EntityBasePath, QPCPath, SPCPath
    
    RaiseEvent InitCompleted(Doc.firstChild.childNodes.length)
    For i = 0 To Doc.firstChild.childNodes.length - 1
        '新建描述类
        
        DoEvents
        strName = Doc.firstChild.childNodes(i).Attributes(0).Text
        ClassName = GetClassName(strName)
        ObjectName = GetObjectName(strName)
        
        RaiseEvent ExportingClass(ClassName)
        
        IDType = Doc.firstChild.childNodes(i).childNodes(0).Attributes(0).Text
        ID = Doc.firstChild.childNodes(i).childNodes(0).Attributes(1).Text
        
        Codes = "using System;" & vbCrLf
        Codes = Codes & vbCrLf
        Codes = Codes & "namespace " & sNameSpace & "DataAS.Details" & vbCrLf
        Codes = Codes & "{" & vbCrLf
            Codes = Codes & vbTab & "[Serializable]" & vbCrLf
            Codes = Codes & vbTab & "public class " & ClassName & "Details" & vbCrLf
            Codes = Codes & vbTab & "{" & vbCrLf
                For j = 0 To Doc.firstChild.childNodes(i).childNodes.length - 1
                    Codes = Codes & vbTab & vbTab & "protected " & FilterToCSharp(Doc.firstChild.childNodes(i).childNodes(j).Attributes(0).Text) & _
                        " _" & Doc.firstChild.childNodes(i).childNodes(j).Attributes(1).Text & ";" & vbCrLf
                Next j
                Codes = Codes & vbCrLf
                
                '属性
                For j = 0 To Doc.firstChild.childNodes(i).childNodes.length - 1
                    Codes = Codes & vbTab & vbTab & "public " & FilterToCSharp(Doc.firstChild.childNodes(i).childNodes(j).Attributes(0).Text) & _
                        " " & Doc.firstChild.childNodes(i).childNodes(j).Attributes(1).Text & vbCrLf & _
                        vbTab & vbTab & "{" & vbCrLf & _
                        vbTab & vbTab & vbTab & "get" & vbCrLf & _
                        vbTab & vbTab & vbTab & "{" & vbCrLf & _
                        vbTab & vbTab & vbTab & vbTab & "return _" & Doc.firstChild.childNodes(i).childNodes(j).Attributes(1).Text & ";" & vbCrLf & _
                        vbTab & vbTab & vbTab & "}" & vbCrLf & _
                        vbTab & vbTab & vbTab & "set" & vbCrLf & _
                        vbTab & vbTab & vbTab & "{" & vbCrLf & _
                        vbTab & vbTab & vbTab & vbTab & "_" & Doc.firstChild.childNodes(i).childNodes(j).Attributes(1).Text & " = value;" & vbCrLf & _
                        vbTab & vbTab & vbTab & "}" & vbCrLf & _
                        vbTab & vbTab & "}" & vbCrLf & vbCrLf
                Next j
                
                If Doc.firstChild.childNodes(i).childNodes.length > 1 Then
                '填充方法 1
                    Codes = Codes & vbTab & vbTab & "/// <summary>" & vbCrLf
                    Codes = Codes & vbTab & vbTab & "/// 部分填充" & vbCrLf
                    Codes = Codes & vbTab & vbTab & "/// </summary>" & vbCrLf
                    Codes = Codes & vbTab & vbTab & "public void Fill("
                    Codes = Codes & FilterToCSharp(Doc.firstChild.childNodes(i).childNodes(1).Attributes(0).Text) & " " & Doc.firstChild.childNodes(i).childNodes(1).Attributes(1).Text
                    For j = 2 To Doc.firstChild.childNodes(i).childNodes.length - 1
                        Codes = Codes & "," & FilterToCSharp(Doc.firstChild.childNodes(i).childNodes(j).Attributes(0).Text) & " " & Doc.firstChild.childNodes(i).childNodes(j).Attributes(1).Text
                    Next j
                    Codes = Codes & ")" & vbCrLf
                    Codes = Codes & vbTab & vbTab & "{" & vbCrLf
                    For j = 1 To Doc.firstChild.childNodes(i).childNodes.length - 1
                        Codes = Codes & vbTab & vbTab & vbTab & "this._" & Doc.firstChild.childNodes(i).childNodes(j).Attributes(1).Text & " = " & _
                            Doc.firstChild.childNodes(i).childNodes(j).Attributes(1).Text & ";" & vbCrLf
                    Next j
                    Codes = Codes & vbTab & vbTab & "}" & vbCrLf    '填充方法结束
                    Codes = Codes & vbCrLf
                End If
                
                '填充方法 2
                Codes = Codes & vbTab & vbTab & "/// <summary>" & vbCrLf
                Codes = Codes & vbTab & vbTab & "/// 全部填充" & vbCrLf
                Codes = Codes & vbTab & vbTab & "/// </summary>" & vbCrLf
                Codes = Codes & vbTab & vbTab & "public void Fill("
                Codes = Codes & FilterToCSharp(Doc.firstChild.childNodes(i).childNodes(0).Attributes(0).Text) & " " & Doc.firstChild.childNodes(i).childNodes(0).Attributes(1).Text
                For j = 1 To Doc.firstChild.childNodes(i).childNodes.length - 1
                    Codes = Codes & "," & FilterToCSharp(Doc.firstChild.childNodes(i).childNodes(j).Attributes(0).Text) & " " & Doc.firstChild.childNodes(i).childNodes(j).Attributes(1).Text
                Next j
                Codes = Codes & ")" & vbCrLf
                Codes = Codes & vbTab & vbTab & "{" & vbCrLf
                For j = 0 To Doc.firstChild.childNodes(i).childNodes.length - 1
                    Codes = Codes & vbTab & vbTab & vbTab & "this._" & Doc.firstChild.childNodes(i).childNodes(j).Attributes(1).Text & " = " & _
                        Doc.firstChild.childNodes(i).childNodes(j).Attributes(1).Text & ";" & vbCrLf
                Next j
                Codes = Codes & vbTab & vbTab & "}" & vbCrLf    '填充方法结束
                Codes = Codes & vbCrLf
                
                '构造函数 1
                Codes = Codes & vbTab & vbTab & "/// <summary>" & vbCrLf
                Codes = Codes & vbTab & vbTab & "/// 无参数构造" & vbCrLf
                Codes = Codes & vbTab & vbTab & "/// </summary>" & vbCrLf
                Codes = Codes & vbTab & vbTab & "public " & ClassName & "Details()" & vbCrLf
                Codes = Codes & vbTab & vbTab & "{" & vbCrLf
                Codes = Codes & vbTab & vbTab & "}" & vbCrLf    '构造函数结束
                Codes = Codes & vbCrLf
                
                '构造函数 2
                If Doc.firstChild.childNodes(i).childNodes.length > 1 Then
                    Codes = Codes & vbTab & vbTab & "/// <summary>" & vbCrLf
                    Codes = Codes & vbTab & vbTab & "/// 部分填充" & vbCrLf
                    Codes = Codes & vbTab & vbTab & "/// </summary>" & vbCrLf
                    Codes = Codes & vbTab & vbTab & "public " & ClassName & "Details("
                    Codes = Codes & FilterToCSharp(Doc.firstChild.childNodes(i).childNodes(1).Attributes(0).Text) & " " & Doc.firstChild.childNodes(i).childNodes(1).Attributes(1).Text
                    For j = 2 To Doc.firstChild.childNodes(i).childNodes.length - 1
                        Codes = Codes & "," & FilterToCSharp(Doc.firstChild.childNodes(i).childNodes(j).Attributes(0).Text) & " " & Doc.firstChild.childNodes(i).childNodes(j).Attributes(1).Text
                    Next j
                    Codes = Codes & ")" & vbCrLf
                    Codes = Codes & vbTab & vbTab & "{" & vbCrLf
                    For j = 1 To Doc.firstChild.childNodes(i).childNodes.length - 1
                        Codes = Codes & vbTab & vbTab & vbTab & "this._" & Doc.firstChild.childNodes(i).childNodes(j).Attributes(1).Text & " = " & _
                            Doc.firstChild.childNodes(i).childNodes(j).Attributes(1).Text & ";" & vbCrLf
                    Next j
                    Codes = Codes & vbTab & vbTab & "}" & vbCrLf    '构造函数结束
                    Codes = Codes & vbCrLf
                End If
                
                '构造函数 3
                Codes = Codes & vbTab & vbTab & "/// <summary>" & vbCrLf
                Codes = Codes & vbTab & vbTab & "/// 全部填充" & vbCrLf
                Codes = Codes & vbTab & vbTab & "/// </summary>" & vbCrLf
                Codes = Codes & vbTab & vbTab & "public " & ClassName & "Details("
                Codes = Codes & FilterToCSharp(Doc.firstChild.childNodes(i).childNodes(0).Attributes(0).Text) & " " & Doc.firstChild.childNodes(i).childNodes(0).Attributes(1).Text
                For j = 1 To Doc.firstChild.childNodes(i).childNodes.length - 1
                    Codes = Codes & "," & FilterToCSharp(Doc.firstChild.childNodes(i).childNodes(j).Attributes(0).Text) & " " & Doc.firstChild.childNodes(i).childNodes(j).Attributes(1).Text
                Next j
                Codes = Codes & ")" & vbCrLf
                Codes = Codes & vbTab & vbTab & "{" & vbCrLf
                For j = 0 To Doc.firstChild.childNodes(i).childNodes.length - 1
                    Codes = Codes & vbTab & vbTab & vbTab & "this._" & Doc.firstChild.childNodes(i).childNodes(j).Attributes(1).Text & " = " & _
                        Doc.firstChild.childNodes(i).childNodes(j).Attributes(1).Text & ";" & vbCrLf
                Next j
                Codes = Codes & vbTab & vbTab & "}" & vbCrLf    '构造函数结束
                Codes = Codes & vbCrLf
                
                '构造函数 4
                Codes = Codes & vbTab & vbTab & "/// <summary>" & vbCrLf
                Codes = Codes & vbTab & vbTab & "/// 构造通过数据行转换" & vbCrLf
                Codes = Codes & vbTab & vbTab & "/// </summary>" & vbCrLf
                Codes = Codes & vbTab & vbTab & "public " & ClassName & "Details(System.Data.DataRow dataRow)" & vbCrLf
                Codes = Codes & vbTab & vbTab & "{" & vbCrLf
                For j = 0 To Doc.firstChild.childNodes(i).childNodes.length - 1
                    Codes = Codes & vbTab & vbTab & vbTab & "this._" & Doc.firstChild.childNodes(i).childNodes(j).Attributes(1).Text & " = " & _
                         GetCSharpType(Doc.firstChild.childNodes(i).childNodes(j).Attributes(0).Text) & "(dataRow[""" & Doc.firstChild.childNodes(i).childNodes(j).Attributes(1).Text & """]);" & vbCrLf
                Next j
                Codes = Codes & vbTab & vbTab & "}" & vbCrLf    '构造函数结束
                Codes = Codes & vbCrLf
                
                
                Codes = Codes & vbCrLf
            Codes = Codes & vbTab & "}" & vbCrLf    '类结束
        Codes = Codes & "}" & vbCrLf    '命名空间结束
        
        '保存 Details 文件
        Call SaveFile(DetailsPath & "\" & ClassName & "Details.cs", Codes)
        
        '新建操作类
        Dim IdentityColumnDataType As String
        Codes = Empty
        Codes = Codes & "using System;" & vbCrLf
        Codes = Codes & "using System.Collections;" & vbCrLf
        Codes = Codes & "using System.Data;" & vbCrLf
        
        If adtAdoType = OleDb Then
            Conn = "System.Data.OleDb.OleDbConnection"
            Codes = Codes & "using System.Data.OleDb;" & vbCrLf

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -