我想在C#中创建一个IronPython类的实例,但是我目前所有的尝试似乎都失败了。
这是我当前的代码:
我能够通过调用t.Invoke(consparams)获取对象的创建实例,但是
这是我当前的代码:
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 for .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__
方法似乎从未被调用。