Создание экземпляров классов IronPython от C#

Я хочу создать экземпляр класса 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__ метод никогда, кажется, не называют.

5
задан 4 August 2010 в 06:32
поделиться