Title: Python classes cannot inherit from C# interfaces that themselves inherit from C# interfaces with methods · Issue #2526 · pythonnet/pythonnet · GitHub
Open Graph Title: Python classes cannot inherit from C# interfaces that themselves inherit from C# interfaces with methods · Issue #2526 · pythonnet/pythonnet
X Title: Python classes cannot inherit from C# interfaces that themselves inherit from C# interfaces with methods · Issue #2526 · pythonnet/pythonnet
Description: Python classes cannot inherit from C# interfaces that themselves inherit from C# interfaces with methods: namespace A { public interface B { void C(); } public interface D : B { } } import clr clr.AddReference('A') import A class E(A.D):...
Open Graph Description: Python classes cannot inherit from C# interfaces that themselves inherit from C# interfaces with methods: namespace A { public interface B { void C(); } public interface D : B { } } import clr clr....
X Description: Python classes cannot inherit from C# interfaces that themselves inherit from C# interfaces with methods: namespace A { public interface B { void C(); } public interface D : B { } } import clr clr....
Opengraph URL: https://github.com/pythonnet/pythonnet/issues/2526
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Python classes cannot inherit from C# interfaces that themselves inherit from C# interfaces with methods","articleBody":"Python classes cannot inherit from C# interfaces that themselves inherit from C# interfaces with methods:\r\n\r\n```cs\r\nnamespace A\r\n{\r\n public interface B\r\n {\r\n void C();\r\n }\r\n\r\n public interface D : B\r\n {\r\n }\r\n}\r\n```\r\n\r\n```python\r\nimport clr\r\n\r\nclr.AddReference('A')\r\nimport A\r\n\r\nclass E(A.D):\r\n __namespace__ = 'F'\r\n def C(self):\r\n pass\r\n```\r\n\r\nOutput:\r\n\r\n```\r\nTraceback (most recent call last):\r\n File \"\u003cstdin\u003e\", line 6, in \u003cmodule\u003e\r\nTypeError: Failed to create Python type for F.E\r\n```\r\n\r\nExtending from `B` works. It also works if `C` is removed from `B`.\r\n\r\nPossibly related to #2511. Reverting to 3.0.3 (before 9ebfbde3) provides the moderately-more-useful error `TypeError: VTable setup of type F.E failed`.\r\n\r\nPlease do **NOT** convert this to a discussion. It is a real bug that requires fixing. As noted above, providing a definition for `C` does not affect whether the bug occurs.\r\n\r\nI have tested this with mono 6.8 and 6.12, as well as with MSCV. The latter gives the slightly-different error:\r\n\r\n```\r\nTraceback (most recent call last):\r\n File \"\u003cstdin\u003e\", line 6, in \u003cmodule\u003e\r\n class E(A.D):\r\nTypeError: Method 'C' in type 'F.E' from assembly 'Python.Runtime.Dynamic, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.\r\n```\r\n\r\nNote that `C` was defined as above.\r\n\r\n---\r\n\r\nAs a workaround, the following can be done...\r\n\r\n```python\r\nimport clr\r\n\r\nclr.AddReference('A')\r\nimport A\r\n\r\nclass E(A.B):\r\n __namespace__ = 'F'\r\n\r\nclass G(E, A.D):\r\n __namespace__ = 'F'\r\n def C(self):\r\n pass\r\n\r\nG().C()\r\n```\r\n\r\nAnd for some reason C has to be implemented in G and not E:\r\n\r\n```\r\nSystem.NotImplementedException: Python object does not have a 'C' method\r\n at Python.Runtime.PythonDerivedType.InvokeMethodVoid (Python.Runtime.IPythonDerivedType obj, System.String methodName, System.String origMethodName, System.Object[] args, System.RuntimeMethodHandle methodHandle, System.RuntimeTypeHandle declaringTypeHandle) [0x00151] in \u003ce8135b23d9064b84a255057569ff100a\u003e:0 \r\n at F.E.C () [0x00000] in \u003cd16dd79070534f72b8760f94ab2e0924\u003e:0 \r\n at F.G._E__C () [0x00000] in \u003cd16dd79070534f72b8760f94ab2e0924\u003e:0 \r\n at (wrapper managed-to-native) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object[],System.Exception\u0026)\r\n at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0007c] in \u003c12b418a7818c4ca0893feeaaf67f1e7f\u003e:0 \r\n\r\nThe above exception was the direct cause of the following exception:\r\n\r\nTraceback (most recent call last):\r\n File \"\u003cstdin\u003e\", line 14, in \u003cmodule\u003e\r\nSystem.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---\u003e System.NotImplementedException: Python object does not have a 'C' method\r\n at Python.Runtime.PythonDerivedType.InvokeMethodVoid (Python.Runtime.IPythonDerivedType obj, System.String methodName, System.String origMethodName, System.Object[] args, System.RuntimeMethodHandle methodHandle, System.RuntimeTypeHandle declaringTypeHandle) [0x00151] in \u003ce8135b23d9064b84a255057569ff100a\u003e:0 \r\n at F.E.C () [0x00000] in \u003cd16dd79070534f72b8760f94ab2e0924\u003e:0 \r\n at F.G._E__C () [0x00000] in \u003cd16dd79070534f72b8760f94ab2e0924\u003e:0 \r\n at (wrapper managed-to-native) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object[],System.Exception\u0026)\r\n at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0007c] in \u003c12b418a7818c4ca0893feeaaf67f1e7f\u003e:0 \r\n --- End of inner exception stack trace ---\r\n at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0009a] in \u003c12b418a7818c4ca0893feeaaf67f1e7f\u003e:0 \r\n at System.RuntimeType.InvokeMember (System.String name, System.Reflection.BindingFlags bindingFlags, System.Reflection.Binder binder, System.Object target, System.Object[] providedArgs, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, System.String[] namedParams) [0x007b0] in \u003c12b418a7818c4ca0893feeaaf67f1e7f\u003e:0 \r\n at System.Type.InvokeMember (System.String name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object target, System.Object[] args) [0x00000] in \u003c12b418a7818c4ca0893feeaaf67f1e7f\u003e:0 \r\n at Python.Runtime.PythonDerivedType.InvokeMethodVoid (Python.Runtime.IPythonDerivedType obj, System.String methodName, System.String origMethodName, System.Object[] args, System.RuntimeMethodHandle methodHandle, System.RuntimeTypeHandle declaringTypeHandle) [0x0015d] in \u003ce8135b23d9064b84a255057569ff100a\u003e:0 \r\n at F.G.C () [0x00000] in \u003cd16dd79070534f72b8760f94ab2e0924\u003e:0 \r\n at (wrapper managed-to-native) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object[],System.Exception\u0026)\r\n at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0007c] in \u003c12b418a7818c4ca0893feeaaf67f1e7f\u003e:0 \r\n```","author":{"url":"https://github.com/sean-anderson-seco","@type":"Person","name":"sean-anderson-seco"},"datePublished":"2024-12-09T15:11:57.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":7},"url":"https://github.com/2526/pythonnet/issues/2526"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:9c637e5f-3fdf-8fa6-b1b8-eb374f8625a8 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D1BA:2C2D0C:15CD64D:1CA673B:69718F34 |
| html-safe-nonce | e8aa9441426daab9619f71ad74d4a63850a62273937ba06360a1d3fc87fb2cb9 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEMUJBOjJDMkQwQzoxNUNENjREOjFDQTY3M0I6Njk3MThGMzQiLCJ2aXNpdG9yX2lkIjoiNTI4NDQ4MTIwNTMyMTk2MTI2OSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 7ab340fc1cbe46e65ab544bba0f65548f347e882be53b1370c5d369b6b658414 |
| hovercard-subject-tag | issue:2727374938 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/pythonnet/pythonnet/2526/issue_layout |
| twitter:image | https://opengraph.githubassets.com/c9cbf0fae69166274065e26b8fff5c5e1e3de27d220f8657cf3c944c6685810d/pythonnet/pythonnet/issues/2526 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/c9cbf0fae69166274065e26b8fff5c5e1e3de27d220f8657cf3c944c6685810d/pythonnet/pythonnet/issues/2526 |
| og:image:alt | Python classes cannot inherit from C# interfaces that themselves inherit from C# interfaces with methods: namespace A { public interface B { void C(); } public interface D : B { } } import clr clr.... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | sean-anderson-seco |
| hostname | github.com |
| expected-hostname | github.com |
| None | 2b0f2f00499ad3dd2c21ad030a3c403edca54df20ea256f6517c6d8c4fa3a1a4 |
| turbo-cache-control | no-preview |
| go-import | github.com/pythonnet/pythonnet git https://github.com/pythonnet/pythonnet.git |
| octolytics-dimension-user_id | 6050430 |
| octolytics-dimension-user_login | pythonnet |
| octolytics-dimension-repository_id | 14748123 |
| octolytics-dimension-repository_nwo | pythonnet/pythonnet |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 14748123 |
| octolytics-dimension-repository_network_root_nwo | pythonnet/pythonnet |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 67235153f3c1514ed5f7dc469f138abc377bd388 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width