Imports System.CodeDom
Imports System.CodeDom.Compiler
Public Class SourceComp
''//編譯器接口
Private m_Compiler As ICodeCompiler
''//編譯器參數
Private m_CompilerParameters As CompilerParameters
''//引用的程序集
Private m_RefAssemblies As String() = {"System.dll", "System.Data.dll"}
''//源代碼
Private m_Source As String = ""
''//記錄是否是默認的源代碼
Private m_Is_Default As Boolean = True
''//記錄編譯狀態
Private m_Compiled As Boolean = False
''//編譯生成的程序集
Private m_Assembly As System.Reflection.Assembly
''//默認源代碼生成的實例
Private m_tmpClass As Object
''//默認源代碼生成的實例函數
Private m_MethodInfo As System.Reflection.MethodInfo
''//默認源代碼函數的表達式參數
Private m_Expression As String
''//返回程序集
Public ReadOnly Property cpAssembly() As System.Reflection.Assembly
Get
Return Me.m_Assembly
End Get
End Property
Sub New()
''//獲取VB編譯器實例
Me.m_Compiler = New VBCodeProvider().CreateCompiler
''//初始編譯器參數
Me.m_CompilerParameters = New CompilerParameters
With Me.m_CompilerParameters
.GenerateExecutable = False ''//False值指定編譯為類集,True編譯為可執行程序
.GenerateInMemory = False ''//只在內存中生成程序集,不輸出到磁盤
''//添加默認的程序集
Me.Add_CompilerParameters()
End With
End Sub
''//添加要引用的程序集
Private Sub Add_CompilerParameters()
Me.m_CompilerParameters.ReferencedAssemblies.AddRange(Me.m_RefAssemblies)
End Sub
''//添加指定的引用程序集
Public Sub Add_CompilerParameters(ByVal RefAssemblies As String())
Me.m_RefAssemblies = RefAssemblies
Me.m_CompilerParameters.ReferencedAssemblies.Clear() ''//清除原有的程序集,重復引用編譯會產生異常
Me.Add_CompilerParameters()
End Sub
''//生成默認的源代碼
''//類名:tmpClass
''//函數名:GetExpressionValue ,參數:Expression ,參數類型:字符串
''//主要功能:返回表達式Expression的值 ,返回值類型:Object
打字不易,如滿意,望采納。