@@ -30,22 +30,29 @@ public static ReflectedClrType GetOrCreate(Type type)
30
30
return pyType ;
31
31
}
32
32
33
- // Ensure, that matching Python type exists first.
34
- // It is required for self-referential classes
35
- // (e.g. with members, that refer to the same class)
36
- pyType = AllocateClass ( type ) ;
37
- ClassManager . cache . Add ( type , pyType ) ;
33
+ try
34
+ {
35
+ // Ensure, that matching Python type exists first.
36
+ // It is required for self-referential classes
37
+ // (e.g. with members, that refer to the same class)
38
+ pyType = AllocateClass ( type ) ;
39
+ ClassManager . cache . Add ( type , pyType ) ;
38
40
39
- var impl = ClassManager . CreateClass ( type ) ;
41
+ var impl = ClassManager . CreateClass ( type ) ;
40
42
41
- TypeManager . InitializeClassCore ( type , pyType , impl ) ;
43
+ TypeManager . InitializeClassCore ( type , pyType , impl ) ;
42
44
43
- ClassManager . InitClassBase ( type , impl , pyType ) ;
45
+ ClassManager . InitClassBase ( type , impl , pyType ) ;
44
46
45
- // Now we force initialize the Python type object to reflect the given
46
- // managed type, filling the Python type slots with thunks that
47
- // point to the managed methods providing the implementation.
48
- TypeManager . InitializeClass ( pyType , impl , type ) ;
47
+ // Now we force initialize the Python type object to reflect the given
48
+ // managed type, filling the Python type slots with thunks that
49
+ // point to the managed methods providing the implementation.
50
+ TypeManager . InitializeClass ( pyType , impl , type ) ;
51
+ }
52
+ catch ( Exception e )
53
+ {
54
+ throw new InternalPythonnetException ( $ "Failed to create Python type for { type . FullName } ", e ) ;
55
+ }
49
56
50
57
return pyType ;
51
58
}
0 commit comments