在IronPython中访问C#类成员
在我的C#代码中,我有一个类,它存储了一些我希望传递给List中的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 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
和List
等基本类型的List
,它们工作正常。
那么如何在我的python脚本中访问这些类属性, EventId
和EventName
?
尝试将Event
类设为public。 问题可能是虽然属性是公共的,但默认情况下类型是internal
的,因此动态类型不会“看到”任何仅由该类型声明的成员。
这只是一个猜测,如果它是错的,请说出来我可以删除答案,避免将来混淆任何人。 通过在C#中的另一个程序集中动态键入,在一个程序集中使用匿名类型可以获得相同的效果。