C'è un modo per utilizzare gli oggetti e le funzioni (compilato in un assembly) IronPython da codice C #?
-
05-10-2019 - |
Domanda
IronPython.net documentazione dice il MSIL nel gruppo non è compatibile con CLS, ma c'è una soluzione?
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.