19/10/09 14:46
marco1
Ok... l'ho letto e ho capito come funziona... pero ho ancora qualche problema... quindi mi potresti aiutare...
> io vorrei fare una classe chiamata 'ExternCode'
> che contiene 3 variabili di tipo MethodInfoPlus (quella structure che hai fatto) cosi posso invokare i metodi quando vogli
> Una funzione che richiede l'inditizzo di un file *txt la quale lo apre e mette le tre funzioni del file:
'OpenMethod'
'SetMethod'
'EndGetMethod'
nelle 3 variabili MethodInfoPlus (Metod e Target)...
> E altre 3 funzioni che richiedano le variabili rispettivamente richieste dalle 3 funzioni carichate e ne svolga l'operato. le funzioni sarebbero:
'Run_OpenMethod'
'Run_SetMethod'
'Run_EndGetMethod'
Che codice dovrei usare????
aaa
19/10/09 15:15
Il Totem
Prima di iniziare a studiare un linguaggio, uno dovrebbe sapere quanto meno la lingua. Pietà per il mio intuito!
aaa
21/10/09 15:45
Il Totem
Il regolamento specifica di essere precisi e comprensibili nelle richieste; se tu non lo sei, non puoi biasimarci, tenuto conto che nessuno è obbligato a risponderti.
Ok... l'ho letto e ho capito come funziona... pero ho ancora qualche problema... quindi mi potresti aiutare...
...
Che codice dovrei usare????
Contraddizione: se hai capito come funziona non dovresti avere problemi.
> io vorrei fare una classe chiamata 'ExternCode'
Questo l'ho capito... Ma non ho capito se ExternCode è una classe, ad esempio astratta, all'interno del codice della tua applicazione oppure se è completamente disgiunta dal progetto e si trova in quel file di testo di cui stavi parlando.
> che contiene 3 variabili di tipo MethodInfoPlus (quella structure che hai fatto) cosi posso invokare i metodi quando vogli
La classe esterna deve gestire tre MethodInfoPlus? Ma è assurdo, perchè le strutture MethodInfoPlus servono solo al DI FUORI della classe esterna, ossia all'interno del progetto. Il fatto è che ogni struttura contiene un delegate, quindi un riferimento ad una funzione da invocare, ed il rispettivo target, ossia l'oggetto DAL QUALE invocare la funzione. Ovviamente questo vale solo se si tratta di metodi di istanza.
> Una funzione che richiede l'inditizzo di un file *txt la quale lo apre e mette le tre funzioni del file:
'OpenMethod'
'SetMethod'
'EndGetMethod'
nelle 3 variabili MethodInfoPlus (Metod e Target)...
Le funzioni del file???
> E altre 3 funzioni che richiedano le variabili rispettivamente richieste dalle 3 funzioni carichate e ne svolga l'operato. le funzioni sarebbero:
'Run_OpenMethod'
'Run_SetMethod'
'Run_EndGetMethod'
Altre funzioni? Ma allora cosa te ne fai degli oggetti MethodInfoPlus?
Ultima modifica effettuata da Il Totem 21/10/09 15:46
aaa
23/10/09 11:45
Thejuster
scusate se mi intrometto nella discussione ma già che ci siamo volevo un pò approfondire anche io su questa cosetta.
effettivamente qualcosa dal C# a vb.net cambia nel framework.
volevo sapere da totem quale metodo usa per estrapolare il valore di ritorno di una funzione
mostro il mio piccolo sorgente di test.
CodeCompileUnit compileUnit = new CodeCompileUnit();
CodeNamespace samples = new CodeNamespace("GameClass");
private void button1_Click(object sender, EventArgs e)
{
ICodeCompiler compiler;
Microsoft.CSharp.CSharpCodeProvider codeProviderCS = new Microsoft.CSharp.CSharpCodeProvider();
compiler = codeProviderCS.CreateCompiler();
CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = false;
parameters.GenerateInMemory = true;
parameters.MainClass = "Main";
parameters.OutputAssembly = "";
parameters.IncludeDebugInformation = false;
String CodeS = this.richTextBox1.Text;
CompilerResults result = compiler.CompileAssemblyFromSource(parameters, CodeS);
if (result.Errors.Count > 0)
{
foreach (CompilerError err in result.Errors)
{
String ersr = err.ToString();
MessageBox.Show(ersr);
}
}
//Qui ho il problema nel ricavare il valore di ritorno di una funzione
// Definizioni
Object o = result.CompiledAssembly.CreateInstance("Player"); //classe da leggere
if (o != null)
{
Type tipo = o.GetType(); //Ricerca del Tipo per la classe
MethodInfo Method = tipo.GetMethod("messaggio"); //void o funzione da leggere
}
else
{
MessageBox.Show("Classe non trovata");
}
}
che metodo usi per recuperare il valore in quella funzione?
questo e il codice di esempio nell'ide
public class Player{
public String messaggio(){
String X = "test";
return X;
}
}
precisamente non riesco ad usare la funzione invoke.
Ultima modifica effettuata da Thejuster 23/10/09 12:52