Dàn diễn viên (int) myobject
chỉ nên làm việc.
Nếu điều đó mang lại cho bạn một ngoại lệ cast không hợp lệ thì đó có thể là do loại biến thể không phải là VT_I4. Đặt cược của tôi là một biến thể với VT_I4 được chuyển đổi thành một hộp int, VT_I2 thành một hộp ngắn, v.v.
Khi thực hiện đúc trên một loại giá trị được đóng hộp, nó chỉ có giá trị để chuyển nó sang loại được đóng hộp. Ví dụ, nếu biến thể được trả về thực sự là VT_I2 thì(int) (short) myObject
nên hoạt động.
Cách dễ nhất để tìm hiểu là kiểm tra đối tượng trả về và xem xét loại của nó trong trình gỡ lỗi. Ngoài ra, hãy đảm bảo rằng trong hội đồng interop, bạn có giá trị trả về được đánh dấu bằngMarshalAs(UnmanagedType.Struct)