Có bất kỳ sự đổ vỡ nào mà tôi nên biết không?Tôi có thể cung cấp Loại làm đầu vào cho nhà cung cấp Loại trong F # không?
Bạn có biết mã hiện có đang xử lý cùng một pb mà tôi có thể gặp phải không?
Thks
Có bất kỳ sự đổ vỡ nào mà tôi nên biết không?Tôi có thể cung cấp Loại làm đầu vào cho nhà cung cấp Loại trong F # không?
Bạn có biết mã hiện có đang xử lý cùng một pb mà tôi có thể gặp phải không?
Thks
Thật không may, bạn không thể chuyển loại dưới dạng tham số tĩnh cho nhà cung cấp loại. Các tham số tĩnh được truyền bằng cách sử dụng MyProvider< "first argument", 42 >
phải là các kiểu nguyên thủy (như string
, int
và tương tự). Tôi không thấy danh sách ở bất kỳ nơi nào trong tài liệu, nhưng Type
chắc chắn không được hỗ trợ.
Vấn đề với việc này là bạn có thể vượt qua nó typeof<MyType>
trong đó MyType
được khai báo trong cùng một tệp với tệp đang sử dụng nhà cung cấp loại và do đó trình biên dịch F # sẽ phải biên dịch phần đầu tiên của tệp sau đó gọi nhà cung cấp và sau đó tiếp tục. Điều này nghe có vẻ, nhưng nó có lẽ là ưu tiên thấp cho đội F #.
Cách tốt nhất để vượt qua thông tin về loại sang nhà cung cấp loại là để cung cấp cho nó một cái tên loại và sau đó tra cứu các loại sử dụng phản chiếu (điều này sẽ chỉ làm việc nếu loại là từ một assembly đã được biên soạn):
type MyTest = MyTypeProvider<"System.Int32">
Làm cho tinh thần. Đó là lý do tại sao, theo quan điểm của tôi, chúng ta cần khái niệm về mức độ thi hành. Akin đến một biểu thức tính toán, có thể nạp môi trường chính với các loại, mà không ressorting để DLL bên ngoài, và có mã được thực hiện trước khi các cấp thực hiện cao hơn. – nicolas