can you typecast a .NET object in IronPython?

前端 未结 4 2130
Happy的楠姐
Happy的楠姐 2021-01-05 07:35

I\'m interfacing with a .NET API in IronPython. The API is returning an object of the wrong type (some kind of generic object). I suspect that the problem is not showing up

相关标签:
4条回答
  • 2021-01-05 08:05

    clr.Convert doesnt exist in IronPython 2.0 . This is not a solution to typecast a .NET object in IronPython?, but it's a workaround to convert the data if you really need it to use it from IronPython

    Create a class like this in VB.NET and compile it into a DLL

    Imports Microsoft.VisualBasic
    
        Public Class MyConvert
    
            Shared Function converttype(ByVal value As String) As Integer
                Return CInt(value)
            End Function
    
        End Class
    

    Then in IronPython you do

    clr.AddReference('MyConvert')
    from MyConvert import converttype         
    converted_value = converttype("2.0")
    
    0 讨论(0)
  • 2021-01-05 08:16

    I had a similar problem on a project a few months ago. This was my fix:

    import clr
    
    clr.GetPythonType(x)
    

    x can be a .NET type or a type that is in a dll file that you have imported using clr.

    I am not a C# programmer, but I have been told by C# programmer colleagues that this code in C# would be:

    typeof(x)
    

    Hope this helps

    0 讨论(0)
  • 2021-01-05 08:23

    If you need to cast numeric value to an enum use the following, because the code above does not work for enums, but only for reference types:

    Enum.ToObject(CustomEnumType, value)
    
    0 讨论(0)
  • 2021-01-05 08:29

    To force a conversion you can do:

    import clr
    convertedObject = clr.Convert(someObject, someType)
    

    This will search for and run implicit/explicit conversions if one exists.

    Note: available since IronPython 2.6.

    0 讨论(0)
提交回复
热议问题