Làm việc trên một dự án sử dụng một số tập lệnh IronPython dưới dạng trình cắm, sử dụng chức năng được mã hóa trong C#. Trong một lớp học C# của tôi, tôi có một tài sản đó là của loại:C#/IronPython Interop và kiểu dữ liệu "nổi"
Dictionary<int, float>
tôi thiết lập giá trị của tài sản từ các mã IronPython rằng, như thế này:
mc = MyClass()
mc.ValueDictionary = Dictionary[int, float]({1:0.0, 2:0.012, 3:0.024})
Tuy nhiên, khi bit này mã được chạy, nó ném ngoại lệ sau đây:
Microsoft.Scripting.ArgumentTypeException was unhandled by user code
Message=expected Dictionary[int, Single], got Dictionary[int, float]
Để làm cho mọi việc kì quặc, ban đầu C# mã được sử dụng
Dictionary<int, double>
nhưng tôi không thể tìm thấy loại "gấp đôi" trong IronPython, đã cố gắng "nổi" trên ý thích và nó hoạt động tốt, không có lỗi. Nhưng bây giờ nó đang sử dụng phao trên cả hai đầu (mà nó nên đã được sử dụng từ đầu) nó lỗi, và nghĩ rằng mã C# đang sử dụng loại dữ liệu "Single"?!
Tôi thậm chí đã kiểm tra trong trình duyệt đối tượng cho C# thư viện và, chắc chắn đủ, nó cho thấy như sử dụng một "phao" kiểu chứ không phải "Độc"
Cảm ơn bạn, câu trả lời hoàn hảo. Và vâng, tôi đoán là tôi đã loại bỏ những ánh xạ, tôi chỉ không biết tại sao. Nó chỉ có vẻ truy cập trực giác nổi trong C# sẽ không được nổi trong Python. –
Bạn được chào đón! Tôi đã có một vấn đề tương tự gần đây (C#/Python Interop). Thực sự rất trực quan của nó, như tất cả các ngôn ngữ giống như C, Java và nhiều hơn nữa sử dụng 'float' cho các số có độ chính xác đơn. –