Я хочу создать экземпляр класса IronPython от C#, но мои текущие попытки все, кажется, перестали работать.
Это - мой текущий код:
ConstructorInfo[] ci = type.GetConstructors();
foreach (ConstructorInfo t in from t in ci
where t.GetParameters().Length == 1
select t)
{
PythonType pytype = DynamicHelpers.GetPythonTypeFromType(type);
object[] consparams = new object[1];
consparams[0] = pytype;
_objects[type] = t.Invoke(consparams);
pytype.__init__(_objects[type]);
break;
}
Я могу получить созданный экземпляр объекта от вызова t. Вызовите (consparams), но __init__
метод, кажется, не называют, и таким образом все свойства, которые я установил из своего сценария Python, не используются. Даже с явным pytype.__init__
звоните, созданный объект все еще, кажется, не инициализируется.
Использование ScriptEngine. Операции. CreateInstance, кажется, не работает, также.
Я использую.NET 4.0 с IronPython 2.6 для.NET 4.0.
Править: Маленькое разъяснение по поводу того, как я намереваюсь сделать это:
В C# у меня есть класс следующим образом:
public static class Foo
{
public static object Instantiate(Type type)
{
// do the instantiation here
}
}
И в Python, следующем коде:
class MyClass(object):
def __init__(self):
print "this should be called"
Foo.Instantiate(MyClass)
__init__
метод никогда, кажется, не называют.