10/04/14 16:27
GN
Se non sbaglio dovresti usare la classe Activator msdn.microsoft.com/it-it/library/…(v=vs.110).aspx
aaa
10/04/14 17:35
amreo
Non è la soluzione che mi serve
inoltre il codice sorgente non lo produco io.
la funzione di compilazione & esegui metodo specificato
NB: estratto dalla guida di totem su pierotofy per la reflection.
inoltre il codice sorgente non lo produco io.
la funzione di compilazione & esegui metodo specificato
Public Sub ExecuteScriptM(ByVal PathScript As String, ByVal lang As String, MetodName As String, ParamArray Params() As Object) 'Crea un nuovo oggetto CompilerParameters, per 'contenere le informazioni relative alla compilazione Dim Parameters As New CompilerParameters With Parameters 'Indica se creare un eseguibile o una libreria di 'classi: in questo caso ci interessa la seconda, 'quindi impostiamo la proprietà su False .GenerateExecutable = False 'Gli warning vengono considerati come errori .TreatWarningsAsErrors = True 'Non vogliamo tenere alcun file temporaneo: ci 'interessa solo l'assembly compilato .TempFiles.KeepFiles = False 'L'assembly verrà tenuto in memoria temporanea .GenerateInMemory = True 'I due riferimenti di cui abbiamo bisogno, che si 'trovano nella GAC (quindi basta specificarne il 'nome). In questo caso, si richiede anche 'l'estensione (*.dll) .ReferencedAssemblies.Add("Microsoft.VisualBasic.dll") .ReferencedAssemblies.Add("System.dll") .ReferencedAssemblies.Add("Logger.dll") End With 'Crea un nuovo provider di compilazione Dim Provider As CodeDomProvider Select Case lang Case "vb" Provider = New VBCodeProvider() Case "vb.net" Provider = New VBCodeProvider() Case "c#" Provider = New CSharpCodeProvider() Case "c#.net" Provider = New CSharpCodeProvider() Case "js" Provider = New JScriptCodeProvider() Case "js.net" Provider = New JScriptCodeProvider() Case "javascript" Provider = New JScriptCodeProvider() Case "javascript.net" Provider = New JScriptCodeProvider() Case Else Throw New Exception("linguaggio sconosciuto") End Select 'E compila il codice seguendo i parametri di 'compilazione forniti dall'oggetto Parameters. Il 'valore restituito dalla funzione 'CompileAssemblyFromSource è di tipo 'CompilerResults e viene salvato in CompResults Dim CompResults As CompilerResults = _ Provider.CompileAssemblyFromFile(Parameters, PathScript) 'Se ci sono errori, lancia un'eccezione If CompResults.Errors.Count > 0 Then Throw New FormatException("Errore nello script!") Else 'Altrimenti crea un riferimento all'assembly di 'output. La proprietà CompiledAssembly di 'CompResults contiene un riferimento diretto a 'quell'assembly, quindi ci è molto comoda. Dim Asm As Reflection.Assembly = CompResults.CompiledAssembly 'Dall'assembly ottiene un OT che rappresenta 'l'unico tipo ivi definito, e da questo ne 'estrae un MethodInfo con informazioni sul End If 'Esegue la funzione MetodName con parametri Params '????????????????????????????????????????????????????????????????? End Sub
NB: estratto dalla guida di totem su pierotofy per la reflection.
aaa