Zugreifen auf C # -Klassenmitglieder in IronPython

8

In meinem C # -Code habe ich eine Klasse, die einige Daten speichert, die ich in einer Liste an meinen Python-Code übergeben möchte. Wenn ich jedoch versuche, auf Eigenschaften dieser Klasse innerhalb meines Python-Codes zuzugreifen, bekomme ich MissingMemberException . Hier ein Beispielcode, um zu zeigen, was ich meine:

C #:

%Vor%

eventParser.py:

%Vor%

Die MissingMemberException sagt "Das Ereignis enthält kein Mitglied namens EventId"

Ich habe getestet, andere Typen an den Python zu übergeben, einschließlich Listen von primitiven Typen wie List< int > und List< string > und sie funktionieren gut.

Wie greife ich auf diese Klasseneigenschaften EventId und EventName in meinem Python-Skript zu?

    
peacemaker 14.06.2012, 20:58
quelle

1 Antwort

14

Versuchen Sie, die Klasse Event öffentlich zu machen. Das Problem liegt möglicherweise darin, dass die Eigenschaft zwar öffentlich ist, der Typ jedoch standardmäßig internal ist und die dynamische Typisierung also keines der Elemente "sieht" werden nur von diesem Typ deklariert.

Es ist nur eine Vermutung, und wenn es falsch ist, bitte sagen Sie, damit ich die Antwort löschen kann und in Zukunft niemanden verwirren kann. Sie erzielen den gleichen Effekt, wenn Sie in einer Assembly anonyme Typen verwenden, indem Sie in einer anderen Assembly nur in C # dynamisch typisieren.

    
Jon Skeet 14.06.2012, 21:01
quelle

Tags und Links