Tôi đang giao tiếp với .NET API trong IronPython. API trả về một đối tượng thuộc loại sai (một số loại đối tượng chung). Tôi nghi ngờ rằng vấn đề không hiển thị trong mã C# của họ vì khai báo kiểu khi đối tượng được xây dựng đang buộc đối tượng trả về cho đúng kiểu. Có thể typecast một đối tượng .NET trong IronPython? Tôi nghĩ rằng điều này sẽ làm các trick.bạn có thể định kiểu đối tượng .NET trong IronPython không?
Trả lời
Để buộc một chuyển đổi bạn có thể làm:
import clr
convertedObject = clr.Convert(someObject, someType)
này sẽ tìm kiếm và chạy ngầm/chuyển đổi rõ ràng nếu có.
Lưu ý: có sẵn từ IronPython 2.6.
Tôi không thể làm việc này. Tôi không thể tìm thấy một phương pháp "Chuyển đổi" trong clr IronPython của tôi. –
'Chuyển đổi' gọi phương thức chuyển đổi rõ ràng/tiềm ẩn nếu có; nếu không có, nó trả về đối tượng không thay đổi. Nó không thể, ví dụ đưa một đối tượng vào loại cha của nó. –
Nếu tôi cố gắng sử dụng điều này để đúc một UInt32 đến một Int16 tôi nhận được một OverflowException. Có cách nào để làm điều này hoạt động giống như một var y = (ngắn) x; đúc? – marcob
Tôi đã gặp sự cố tương tự đối với một dự án cách đây vài tháng. Đây là sửa chữa của tôi:
import clr
clr.GetPythonType(x)
x
có thể là một loại NET hoặc một loại đó là trong một file dll mà bạn đã nhập khẩu sử dụng clr
.
Tôi không phải là C# lập trình viên, nhưng tôi đã được thông báo bởi C# lập trình viên đồng nghiệp rằng mã này trong C# sẽ là:
typeof(x)
Hope this helps
clr.Convert doesnt tồn tại trong IronPython 2.0 . Đây không phải là giải pháp để định kiểu đối tượng .NET trong IronPython ?, nhưng đó là giải pháp để chuyển đổi dữ liệu nếu bạn thực sự cần nó để sử dụng nó từ IronPython
Tạo một lớp như thế này trong VB.NET và biên dịch nó thành một DLL
Imports Microsoft.VisualBasic
Public Class MyConvert
Shared Function converttype(ByVal value As String) As Integer
Return CInt(value)
End Function
End Class
sau đó, trong IronPython bạn làm
clr.AddReference('MyConvert')
from MyConvert import converttype
converted_value = converttype("2.0")
Nếu bạn cần phải cast giá trị số một enum
sử dụng sau đây, bởi vì các mã trên không làm việc cho sự đếm, nhưng chỉ cho tài liệu tham khảo các loại:
Enum.ToObject(CustomEnumType, value)
- 1. Bạn có thể khởi tạo một đối tượng đối tượng từ JSON trong .NET không?
- 2. .net, bạn có nhận được đối tượng giao dịch không?
- 3. .NET: Làm thế nào để bạn có được kiểu của một đối tượng null?
- 4. PHPExcel định dạng ô cụ thể từ đối tượng kiểu
- 5. Bạn có thể giả mạo Array.isArray() với đối tượng do người dùng xác định không?
- 6. Bạn có thể nhận mã định danh duy nhất cho đối tượng MATLAB không?
- 7. Có thể lấy một đối tượng chuỗi .Net trong VBScript không?
- 8. Truyền một đối tượng có kiểu không xác định làm tham số trong phương thức Java
- 9. Bạn có thể lấy khóa ngoại từ một đối tượng trong Doctine2 mà không tải đối tượng đó không?
- 10. Không thể truyền đối tượng kiểu MyObject để nhập MyObject
- 11. MvcMiniProfiler Không thể truyền đối tượng kiểu EFProfiledDbConnection
- 12. Không thể sử dụng DateTime trong IronPython
- 13. Bạn có thể tạo một đối tượng trong Javascript không được kế thừa từ Object không?
- 14. Bạn có thể sử dụng các loại LINQ và các phương thức mở rộng trong IronPython không?
- 15. Có thể chạy mã khi một đối tượng nằm ngoài phạm vi trong .Net không?
- 16. Bạn có thể giới hạn mức sử dụng CPU trên một đối tượng quy trình .NET không?
- 17. Bạn có thể ghi đè các nhà văn luồng trong các đối tượng scala @serializable không?
- 18. Bạn có thể đặt DefaultDisplayPropertySet của đối tượng trong tập lệnh PowerShell v2 không?
- 19. Bạn có thể gắn thẻ các đối tượng S3 riêng lẻ trong AWS không?
- 20. Bạn có thể đặt thuộc tính [[Class]] bên trong của đối tượng ECMAScript không?
- 21. Bạn có thể liên kết toàn bộ đối tượng với CommandParameter trong XAML không?
- 22. Đặt đối tượng gọi lại kiểu C theo định hướng?
- 23. Có một nhóm đối tượng chung cho .NET không?
- 24. Có thể tạo một đối tượng không có lớp trong C# không?
- 25. Bạn có thể xác định nhiều TargetTypes cho một kiểu XAML không?
- 26. Bạn có thể sử dụng .net 3.5 DLL với trang web .net 2.0 không?
- 27. Làm cách nào để xác định kích thước của các đối tượng có thể kéo trong tệp kiểu?
- 28. Đối tượng thuộc loại 'System.Int32' không thể chuyển đổi thành kiểu 'System.Web.Security.Cryptography.Purpose'
- 29. Chúng ta có thể lấy kiểu đối số lambda không?
- 30. Kiểu nguyên thủy vs Kiểu đối tượng trong Java
Bạn có thể giải thích thêm một chút không? Bạn có ý nghĩa gì bởi loại sai? – Rohit
Có vẻ như IronPython luôn điền các thành viên của đối tượng theo loại "thực" của nó (vì nó sử dụng sự phản chiếu để xác định loại đó). Bạn có thể cho chúng tôi một ví dụ mà điều này không đứng? –