Estoy interactuando con una API .NET en IronPython. La API está devolviendo un objeto del tipo incorrecto (algún tipo de objeto genérico). Sospecho que el problema no se muestra en su código C# porque la declaración de tipo cuando se construye el objeto está forzando al objeto devuelto al tipo correcto. ¿Es posible encasillar un objeto .NET en IronPython? Creo que esto haría el truco.¿Puedes encasillar un objeto .NET en IronPython?
Respuesta
Para forzar una conversión que puede hacer:
import clr
convertedObject = clr.Convert(someObject, someType)
Este será buscar y ejecutar las conversiones implícitas/explícitos, si existiera.
Nota: disponible desde IronPython 2.6.
No pude hacer que esto funcione. No pude encontrar un método "Convertir" en mi IronPython clr. –
'Convert' invoca un método de conversión explícito/implícito si lo hay; si no lo hay, devuelve el objeto sin cambios. No puede, p. lanzar un objeto a su tipo principal. –
Si trato de usar esto para convertir un UInt32 a un Int16 obtengo una OverflowException. ¿Hay alguna manera de hacer esto que funcione como una var y = (short) x explícita; ¿emitir? – marcob
Tuve un problema similar en un proyecto hace unos meses. Este fue mi solución:
import clr
clr.GetPythonType(x)
x
puede ser un tipo .NET o un tipo que está en un archivo DLL que ha importado utilizando clr
.
No soy un programador de C#, pero me han dicho por C# colegas programador que este código en C# sería:
typeof(x)
Esperanza esto ayuda
clr.Convert no lo existe en IronPython 2.0 . Esto no es una solución a encasillarse en un objeto .NET IronPython ?, pero es una solución para convertir los datos en caso de que realmente lo necesite usarlo de IronPython
Crear una clase como esta en VB.NET y compilar en un DLL
Imports Microsoft.VisualBasic
Public Class MyConvert
Shared Function converttype(ByVal value As String) As Integer
Return CInt(value)
End Function
End Class
Luego, en IronPython que hacen
clr.AddReference('MyConvert')
from MyConvert import converttype
converted_value = converttype("2.0")
Si necesita echar valor numérico a una enum
utilizar los siguientes, ya que el código anterior no funciona para las enumeraciones, pero sólo para referencia tipos:
Enum.ToObject(CustomEnumType, value)
- 1. IronPython vs. Python .NET
- 2. ¿Puedes crear una instancia de objeto de JSON en .NET?
- 3. ¿Cómo puedo encasillar con type_info?
- 4. Cómo incrustar IronPython en una aplicación .NET
- 5. ¿Puedes mezclar lenguajes .net en un solo proyecto?
- 6. ¿Cómo creo un servicio web en IronPython?
- 7. Java: ¿encasillar de forma segura un clon de una ArrayList?
- 8. IronPython en ASP.NET MVC
- 9. Sandbox IronPython?
- 10. Cómo descargar una referencia de ensamblado .NET en IronPython
- 11. ¿Cómo convierto de un .NET DateTime a un datetime de IronPython?
- 12. ¿Puedes bloquear un diccionario genérico?
- 13. Adjuntar metainformación a un objeto en .NET
- 14. ¿Hay un objeto OpenFileOrFolderDialog en .NET?
- 15. Python o IronPython
- 16. Cómo usar un dll C# en IronPython
- 17. ¿Estoy llamando a un objeto .NET o un objeto COM?
- 18. En PHP, ¿puedes instanciar un objeto y llamar a un método en la misma línea?
- 19. Incrustar IronPython en C#
- 20. ¿Puedes mezclar versiones de .NET framework en una solución?
- 21. IronPython en Unity3D
- 22. Compatibilidad con IronPython 3
- 23. IronPython en VisualStudio 2012
- 24. ¿Cómo incrustar un shell interactivo de IronPython en una aplicación?
- 25. ¿Cómo desarrollar aplicaciones IronPython en Mono?
- 26. ¿Cómo creo un ensamblado .NET en IronPython y lo llamo desde C#?
- 27. ¿Cómo importo tipos no espaciados en IronPython?
- 28. ¿Por qué no puedes poner un objeto const en un contenedor STL?
- 29. IronPython Webframework
- 30. ¿Puedes lanzar un LPTSTR a un BSTR?
¿Podría elaborar un poco más? ¿Qué quieres decir con tipo incorrecto? – Rohit
Parece que IronPython siempre rellena los miembros de un objeto de acuerdo con su tipo "real" (ya que usa la reflexión para determinar ese tipo). ¿Puedes darnos un ejemplo en el que esto no funciona? –