C'è un modo per utilizzare gli oggetti e le funzioni (compilato in un assembly) IronPython da codice C #?

StackOverflow https://stackoverflow.com/questions/3795914

Domanda

IronPython.net documentazione dice il MSIL nel gruppo non è compatibile con CLS, ma c'è una soluzione?

È stato utile?

Soluzione

Questa è stata in parte una motivazione per aggiungere il tipo di dynamic a C # 4.0. Il problema più grande è che le dichiarazioni IronPython non include informazioni sul tipo, il che rende difficile l'uso da C #. La parola chiave dynamic aggiunge il supporto per tali oggetti dinamicamente tipizzati a C # 4.0. Si veda ad esempio:

funzioni di chiamata / oggetti da C # 3.0 è un po 'più fastidioso, ma è ancora possibile . Dovrete semplicemente a qualcosa di scrivere come foo.Invoke("Bar", 42) invece di scrivere foo.Bar(42).

Altri suggerimenti

sto scrivendo questo sul mio telefono così ti prego di perdonare eventuali errori stupidi. Per utilizzare il compilato di montaggio, assicurarsi che si compila con clr.CompileModules, NON pyc.py. Poi, nel tuo C # chiamano il metodo LoadAssembly sul vostro oggetto Python ScriptEngine. Il modulo può essere importato chiamando il metodo ImportModule sul ScriptEngine. Da lì, se si può approfittare della parola chiave dinamica, farlo. In caso contrario, ti verrà bloccato con qualche stringa magica chiamate pesanti GetVariable. Si noti inoltre che si dovrà fornire la libreria standard per la vostra Assemblea Python compilato in una forma o nell'altra.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top