28/08/08 10:07
Thejuster
Ultima modifica effettuata da Thejuster 28/08/08 10:07
mire.forumfree.it/ - Mire Engine
C# UI Designer
C# UI Designer
Imports System.Runtime.InteropServices Imports System.CodeDomDim '... Dim Params As New Compiler.CompilerParameters Dim CodeProvider As CodeDom.Compiler.CodeDomProvider Dim Result As Compiler.CompilerResults 'Inizializza il compilatore CodeProvider = New Microsoft.VisualBasic.VBCodeProvider 'Aggiunge i riferimenti necessari Params.ReferencedAssemblies.Add("System.dll") 'Dato che vuoi creare un dll dal codice esterno, 'imposti GenerateExecutable = False Params.GenerateExecutable = False 'Compila il codice Result = CodeProvider.CompileAssemblyFromSource(Params, "Codice (stringa)") 'Se ci sono errori, vede quali sono If Result.Errors.Count > 0 Then For Each [Error] As Compiler.CompilerError In Result.Errors 'Enumera tutti gli errori del codice 'Potresti visualizzare dei messagebox di errore Next End If
Class Plugin Sub DisplayMsg() MessageBox.Show("Ciao") End Sub End Class
'Path dovrebbe assumere il valore di Result.PathToAssembly Dim Path As String Dim Asm As Assembly = Assembly.LoadFrom(Path) Dim Plugin As Object 'Crea l'oggetto plugin Plugin = Asm.CreateInstance("Plugin") 'Ottiene i suoi metodi Dim Methods() As Reflection.MemberInfo = _ Plugin.GetType.GetMethods() 'Li controlla tutti For Each MI As Reflection.MethodInfo In Methods 'Prende quello che si chiama DisplayMsg If MI.Name = "DisplayMsg" Then 'Lo invoca dall'oggetto Plugin. Nothing significa 'che a questo metodo non vengono passati parametri MI.Invoke(Plugin, Nothing) End If Next