Я хочу создать экземпляр класса 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.Invoke (consparams), но метод __init__
, кажется, не вызывается, и, следовательно, все свойства, которые я установил из моего скрипта Python не использовал. Даже с явным вызовом pytype.__init__
созданный объект все еще не инициализирован.
Использование ScriptEngine.Operations.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__
никогда не вызывается.