pythonnet
pythonnet copied to clipboard
Cannot convert to managed type
Environment
- Pythonnet version: 3.0.0-rc4
- Python version: 3.8
- Operating System: Windows11
- .NET Runtime: .NET Framework 4.8
Details
With the following code in C#, when a Python class has getitem() defined, it will be converted to an array (System.Object[]) in managed code:
List
def __getitem__(self, key):
if isinstance(key, int):
return self.row[key]
if key in self.col_names:
index = self.col_names.index(key)
return self.row[index]
else:
return None
col_names=['col1', 'col2', 'col3'] row=[1, '2', 3]
r = DBRow(row, col_names) lst.Add(r) ";
var code = PythonEngine.Compile(text);
scope.Execute(code);
}
}
string str = lst[0].GetType().ToString();
Can you clarify? The bug is that str variable ends up being System.Object[], and you expect it to be PyObject?
Yes, @lostmsu. I expect it to be PyObject. Then I can view the class members/properties in the C# world. System.Object[] does not allow me to do that.
I believe this should be fixed now.