8

在我的 C# 代码中,我有一个类,它存储了一些我希望在列表中传递给我的 python 代码的数据。但是,当我尝试在我的 python 代码中访问该类的属性时,我得到MissingMemberException. 这里有一些示例代码来说明我的意思:

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");

事件解析器.py:

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

MissingMemberException说“事件不包含名为 EventId 的成员”

我已经测试过将其他类型传递给 python,包括原始类型列表,例如List< int >andList< string >并且它们工作正常。

那么如何在我的 python 脚本中EventId访问这些类属性呢?EventName

4

1 回答 1

15

尝试Event公开课程。问题可能是尽管属性是公共的,但类型internal默认的,因此动态类型不会“看到”任何仅由该类型声明的成员。

这只是一个猜测,如果有错误,请说,以便我可以删除答案,以免将来混淆任何人。不过,通过在 C# 中的另一个程序集中动态键入,在一个程序集中使用匿名类型确实可以获得相同的效果。

于 2012-06-14T21:01:15.687 回答