2012-06-14 3 views
8

내 C# 코드에는 목록의 파이썬 코드로 전달하려는 일부 데이터를 저장하는 클래스가 있습니다. 그러나 파이썬 코드 내에서 해당 클래스의 속성에 액세스하려고하면 MissingMemberException이됩니다.IronPython에서 C# 클래스 멤버에 액세스

C 번호를 : 여기에 몇 가지 예제 코드는 무슨 뜻인지 보여

eventParser.py
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"); 

다음 MissingMemberException 말한다

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

I "이벤트에서 EventId라는 이름의 멤버를 포함하지" 다른 유형을 List<int>List<string>과 같은 기본 유형 목록을 포함하여 다른 유형을 파이썬에 전달하여 테스트 했으므로 제대로 작동합니다.

내 파이썬 스크립트에 EventIdEventName 등의 클래스 속성에 액세스하려면 어떻게해야합니까?

답변

14

Event 클래스를 공개적으로 만드십시오. 문제는 속성 인이 공개되었지만 유형이 인 경우 기본적으로 internal이며 동적 유형 지정은 해당 유형으로 선언 된 멤버 만 "볼"수 없습니다.

이것은 추측에 불과하며 잘못 되었다면 답을 삭제하고 나중에 누군가를 혼동하지 않도록 말하십시오. C#에서 다른 어셈블리의 동적 타이핑을 통해 하나의 어셈블리에서 익명 형식을 사용하는 것과 동일한 효과를 얻을 수 있습니다.

+0

감사합니다. Jon, 그 일을했습니다. – peacemaker

관련 문제