Tôi có một lớp cơ sở với các đối số chung rõ ràng trong F #. Tôi đang cố gắng để kiểm tra xem loại được cho tôi đang sử dụng thực hiện một giao diện cụ thể. Tôi nghĩ "nếu ob: ISysAware sau đó" sẽ làm gì, nhưng phàn nàn luôn là như nhau:Thời gian ép buộc của các kiểu chung trong F #
let (|SysAware|_|) t =
match t with
| :? ISysAware as p -> Some(p)
| _ -> None
lỗi FS0008: Đây ép buộc thời gian chạy hoặc gõ thử từ loại 'vào ISysAware liên quan đến một loại không xác định dựa trên thông tin trước điểm chương trình này. Thử nghiệm loại thời gian chạy không được phép trên một số loại. Cần thêm chú thích loại.
Tôi không muốn sử dụng sự phản chiếu ở đây, hiển nhiên. IsAssignableFrom sẽ thực hiện thủ thuật với chi phí cao.
Suy nghĩ?
thú vị, nhưng tôi không có 'a: not struct và' a: null làm ràng buộc. – hammett