Tôi đang cố gắng khớp mẫu với một vài loại mà tôi quan tâm để tạo SQL. Lý tưởng nhất là tôi muốn làm điều này:Có cách nào trong F # để loại-kiểm tra đối với một loại chung chung mà không chỉ định loại cá thể không?
let rec getSafeValue record (prop: PropertyInfo) =
match prop.GetValue(record, null) with
| :? string as str -> "'" + str + "'"
| :? Option<_> as opt ->
match opt with
| Some v -> getSafeValue v prop
| None -> "null"
| _ as v -> v.ToString()
Vấn đề là ở đây, loại tham số để Option<_>
được hạn chế để phù hợp với các record
, mà kết thúc lên được chỉ obj
.
Tôi biết tôi có thể thực hiện một số kiểm tra dựa trên sự phản chiếu (kiểm tra xem đó là loại chung và đó là loại tùy chọn dựa trên tên), nhưng tôi muốn tránh điều đó nếu có khả thi.
đó là một cách gọn gàng để làm điều đó. tôi đã làm một cái gì đó tương tự. – kolosy