[Python.NET] struct with no explicit constructor

Jeff Ames jeffames at gmail.com
Thu Oct 16 01:23:05 CEST 2008


Hello,

I'm trying to create an instance of a struct that has no explicit
constructor in C#, but in python I always get a TypeError.

My test struct in C#:

  namespace Foo
  {
      public struct MyStruct
      {
          public int x;
      }
  }

In python:

  mystruct = Foo.MyStruct()

This gives me "TypeError: no constructor matches given arguments".
I get slightly further calling __new__ explicitly:

  mystruct = object.__new__(Foo.MyStruct)
  mystruct.__init__()

However, then I get an exception from when mystruct goes out of scope:

  Unhandled Exception: System.ArgumentException: GCHandle value cannot be zero
    at System.Runtime.InteropServices.GCHandle.op_Explicit (IntPtr
value) [0x00000]
    at Python.Runtime.ManagedType.GetManagedObject (IntPtr ob) [0x00000]
    at Python.Runtime.ClassBase.tp_dealloc (IntPtr ob) [0x00000]
    at (wrapper native-to-managed) Python.Runtime.ClassBase:tp_dealloc (intptr)
    at (wrapper managed-to-native) Python.Runtime.Runtime:Py_Main (int,string[])
    at Python.Runtime.PythonConsole.Main (System.String[] args) [0x00000]

If I add an explicit constructor to MyStruct, everything works fine,
but this is a third-party library that I'd like to use as-is if
possible.  Is there any way to do this?

Thanks,
Jeff


More information about the PythonDotNet mailing list