2012-06-14 5 views
8

私のC#コードでは、リスト内のPythonコードに渡すデータを格納するクラスがあります。しかし、私はPythonコード内でそのクラスのプロパティにアクセスしようとすると、私はMissingMemberExceptionを取得します。ここで私が何を意味するか示すために、いくつかのサンプルコード:IronPythonのC#クラスメンバーへのアクセス

の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<Event> 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 

MissingMemberExceptionが、私は "イベントのEventIdという名前のメンバーが含まれていません"

を語ります他の型をPythonに渡してテストしました。List<int>List<string>のようなプリミティブ型のリストを含み、正常に動作します。

私はこれらのクラスのプロパティEventIdEventNameにPythonスクリプトでどのようにアクセスしますか?

答えて

14

Eventクラスを公開するようにしてください。問題は、のプロパティーが公開されているにもかかわらず、タイプがデフォルトでinternalであるため、動的タイピングはそのタイプのみで宣言されているメンバーを「認識」しない可能性があります。

これは単なる推測であり、間違っている場合は、回答を削除して今後誰かを混乱させないようにしてください。あなたはC#の中だけで別のアセンブリで動的な型指定を介して1つのアセンブリで匿名型を使用することから同じ効果を得ます。

+0

ありがとうジョン、それは仕事をしました。 – peacemaker

関連する問題