Oppure

Loading
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
20/10/09 20:38
marco1
:_doubt: Siete molto crudeli... nei confronti dei messaggi che scrivo 'alla veloce' ... ma avete capito la domanda??
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
mire.forumfree.it/ - Mire Engine
C# UI Designer
23/10/09 16:33
Il Totem
E' proprio Invoke che devi usare. Accetta due parametri nell'overload più semplice. Il primo è l'oggetto da cui richiamare il metodo (se si tratta di un metodo d'istanza, come in questo caso); se è un metodo statico, puoi anche inserire Nothing (null) come primo parametro. Il secondo è un array di Object che contiene i parametri da passare al metodo. Il valore restituito è pari al valore restituito dalla funzione, oppure Nothing (null) se si tratta di una procedura.
Nel tuo caso:
string c = Method.Invoke(o, new Object[] {});
aaa
24/10/09 9:18
Thejuster
Grandioso, era proprio questo che non riuscivo a capire,

se avrei copiato da codice o da una guida non avrei risolto nulla,
ma grazie alla tua spiegazione dettagliata ho capito perfettamente cosa intedevi
grazie mille :k:
mire.forumfree.it/ - Mire Engine
C# UI Designer