2012-06-14 41 views
8

Trong mã C# của tôi, tôi có một lớp lưu trữ một số dữ liệu tôi muốn chuyển xuống mã python của tôi trong Danh sách. Tuy nhiên, khi tôi cố gắng truy cập các thuộc tính của lớp đó bên trong mã python của tôi, tôi nhận được MissingMemberException. Dưới đây một số mã ví dụ cho thấy những gì tôi có nghĩa là:Truy cập các thành viên lớp C# trong IronPython

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 

Các MissingMemberException nói "tổ chức sự kiện không chứa thành viên mang tên EventId"

tôi đã thử nghiệm truyền các loại khác cho trăn, bao gồm danh sách các kiểu nguyên thủy như List<int>List<string> và chúng hoạt động tốt.

Vậy làm cách nào để truy cập các thuộc tính lớp học này, EventIdEventName trong tập lệnh python của tôi?

Trả lời

14

Thử đặt công khai lớp Event. Vấn đề có thể là mặc dù thuộc tính là công khai, loạiinternal theo mặc định và do đó, nhập động không "thấy" bất kỳ thành viên nào chỉ được khai báo theo loại đó.

Đó chỉ là phỏng đoán và nếu sai, vui lòng nói để tôi có thể xóa câu trả lời và tránh nhầm lẫn bất kỳ ai trong tương lai. Bạn có được hiệu ứng tương tự từ việc sử dụng các kiểu vô danh trong một assembly thông qua việc gõ động trong một assembly khác ngay trong C#.

+0

Cảm ơn Jon, đã thực hiện công việc. – peacemaker

Các vấn đề liên quan