Accesso ai membri della class C # in IronPython

Nel mio codice C # ho una class che memorizza alcuni dati che desidero passare al mio codice Python in una lista. Tuttavia, quando provo ad accedere alle proprietà di quella class all’interno del mio codice python ottengo MissingMemberException . Ecco alcuni esempi di codice per mostrare cosa intendo:

C #:

 class Event { public int EventId { get; set; } public string EventName { get; set; } } //other processing here... //this just fills the list with event objects List eventList = GetEvents(); //this sets a variable in the ScriptScope PythonEngine.SetVariable( "events", eventList); PythonEngine.Execute("eventParser.py"); 

eventParser.py:

 for e in events: print e.EventId, " / ", e.EventName 

L’ MissingMemberException dice “L’evento non contiene alcun membro denominato EventId”

Ho testato il passaggio di altri tipi al Python, inclusi gli elenchi di tipi primitivi come List e List e funzionano bene.

Quindi, come posso accedere a queste proprietà di class, EventId e EventName nel mio script python?

Prova a rendere pubblica la class Event . Il problema può essere che, sebbene la proprietà sia pubblica, il tipo è internal per impostazione predefinita, pertanto la digitazione dynamic non “vede” alcun membro che viene dichiarato solo da quel tipo.

È solo una supposizione, e se è sbagliato, per favore dì così posso cancellare la risposta ed evitare di confondere qualcuno in futuro. Si ottiene lo stesso effetto dall’utilizzo di tipi anonimi in un assembly tramite digitando dynamicmente un altro assembly solo all’interno di C #.