2012-06-14 18 views
8

C# kodumda, bir Listedeki python koduma geçmek istediğim bazı verileri depolayan bir sınıfa sahibim. Ancak, bu sınıfın özelliklerine python kodumun içinden erişmeye çalıştığımda, MissingMemberException'u alırım.IronPython'da C# sınıf üyelerine erişme

C#: İşte bazı örnek kod ne demek istediğimi göstermek için

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 diyor

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

ben "Olay EventID adında üyeyi içerir" List<int> ve List<string> gibi ilkel türlerin listeleri de dahil olmak üzere diğer türlerini python'a geçirmeyi denediler ve iyi çalışıyorlar.

Python betiğimde bu sınıf özelliklerine, EventId ve EventName'a nasıl erişirim?

cevap

14

Event sınıfını genel yapmayı deneyin. Sorun, özelliği genel kullanıma açık olsa da, tip türü internal varsayılan olarak olabilir ve bu nedenle dinamik yazım, yalnızca bu tür tarafından bildirilen üyelerden hiçbirini "görmez".

Sadece bir tahmindir, ve eğer yanlışsa, cevabını silip gelecekte kimseyi karıştırmamak için lütfen söyleyin. Aynı etkiyi, bir derlemede anonim türleri kullanarak, yalnızca C# içinde başka bir derlemede dinamik yazım kullanarak gerçekleştirirsiniz.

+0

Teşekkürler Jon, bu işi yaptı. – peacemaker

İlgili konular