Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Codice esterno... [vb.net]
Forum - C# / VB.NET - Codice esterno... [vb.net] - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:15
Lunedì, 19/10/2009
Prima di iniziare a studiare un linguaggio, uno dovrebbe sapere quanto meno la lingua. Pietà per il mio intuito!

PM Quote
Avatar
marco1 (Normal User)
Pro


Messaggi: 157
Iscritto: 12/02/2009

Segnala al moderatore
Postato alle 22:38
Martedì, 20/10/2009
:_doubt: Siete molto crudeli... nei confronti dei messaggi che scrivo 'alla veloce' ... ma avete capito la domanda??

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:45
Mercoledì, 21/10/2009
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.

Testo quotato

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.

Testo quotato

> 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.

Testo quotato

> 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.

Testo quotato

> 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???

Testo quotato

> 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 il 21/10/2009 alle 17:46
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2298
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 13:45
Venerdì, 23/10/2009
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.

Codice sorgente - presumibilmente C++

  1. CodeCompileUnit compileUnit = new CodeCompileUnit();
  2. CodeNamespace samples = new CodeNamespace("GameClass");
  3.  
  4.  
  5. private void button1_Click(object sender, EventArgs e)
  6.         {
  7.  
  8. ICodeCompiler compiler;
  9.  
  10.             Microsoft.CSharp.CSharpCodeProvider codeProviderCS = new Microsoft.CSharp.CSharpCodeProvider();
  11.             compiler = codeProviderCS.CreateCompiler();
  12.  
  13.             CompilerParameters parameters = new CompilerParameters();
  14.  
  15.             parameters.GenerateExecutable = false;
  16.             parameters.GenerateInMemory = true;
  17.             parameters.MainClass = "Main";
  18.             parameters.OutputAssembly = "";
  19.             parameters.IncludeDebugInformation = false;
  20.  
  21.             String CodeS = this.richTextBox1.Text;
  22.             CompilerResults result = compiler.CompileAssemblyFromSource(parameters, CodeS);
  23.  
  24.             if (result.Errors.Count > 0)
  25.             {
  26.                 foreach (CompilerError err in result.Errors)
  27.                 {
  28.  
  29.                     String ersr = err.ToString();
  30.                     MessageBox.Show(ersr);
  31.                 }                
  32.             }
  33.  
  34.  
  35.  
  36. //Qui ho il problema nel ricavare il valore di ritorno di una funzione
  37.  
  38. // Definizioni
  39.  
  40.             Object o = result.CompiledAssembly.CreateInstance("Player"); //classe da leggere
  41.  
  42.             if (o != null)
  43.             {
  44.  
  45.                 Type tipo = o.GetType(); //Ricerca del Tipo per la classe
  46.                 MethodInfo Method = tipo.GetMethod("messaggio"); //void o funzione da leggere
  47.  
  48.            
  49.              
  50.             }
  51.             else
  52.             {
  53.  
  54.                 MessageBox.Show("Classe non trovata");
  55.             }
  56. }



che metodo usi per recuperare il valore in quella funzione?

questo e il codice di esempio nell'ide



Codice sorgente - presumibilmente C#

  1. public class Player{
  2.  
  3.         public String messaggio(){
  4.                 String X = "test";
  5.                 return X;
  6.  
  7.         }
  8.  
  9. }



precisamente non riesco ad usare la funzione invoke.

Ultima modifica effettuata da Thejuster il 23/10/2009 alle 14:52


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 18:33
Venerdì, 23/10/2009
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:
Codice sorgente - presumibilmente C# / VB.NET

  1. string c = Method.Invoke(o, new Object[] {});


PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2298
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 11:18
Sabato, 24/10/2009
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:


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo