Tôi nghĩ @kvb đưa ra tổng quan tốt về một số khó khăn về kỹ thuật. Tôi đồng ý suy luận loại sẽ có vấn đề - về cơ bản bạn sẽ bị hạn chế sử dụng các loại nhà cung cấp được tạo cục bộ, tương tự như các loại ẩn danh. Tôi nghĩ C# có thể có thứ gì đó tương tự như Roslyn, nhưng tôi nghi ngờ nó sẽ được tích hợp một cách tao nhã và trơn tru như trong F # (nơi các nhà cung cấp kiểu thực tế là tính năng ngôn ngữ và không chỉ là công cụ ).
Để trả lời hai câu hỏi cụ thể của bạn:
[Làm thế nào tôi có thể] sử dụng F # 3.0 cung cấp trong C# mã?
Nhà cung cấp loại F # thực sự chỉ được hiểu bởi trình biên dịch F #, vì vậy bạn sẽ cần phải sử dụng chúng từ F #. Đối với các nhà cung cấp loại generative (SQL, thực thể, WSDL, tệp cấu hình), bạn có thể tham khảo nhà cung cấp từ F # và sử dụng các loại được tạo từ dự án C#.
Để xóa xóa nhà cung cấp loại, bạn không thể thực hiện việc này, vì loại không thực sự tồn tại và chỉ F # mới có thể xem chúng. Vì vậy, lựa chọn tốt nhất là viết mã xử lý của bạn trong F # và trả lại kết quả dưới dạng bộ sưu tập các bản ghi hoặc các loại khác có thể dễ dàng được tiêu thụ từ C#.
Việc triển khai C# cần có khả năng sử dụng chúng là gì?
Tôi có thể, tất nhiên, chỉ cần nói "C# sẽ phải hỗ trợ nhà cung cấp loại!", Nhưng đây là một số suy nghĩ khác. Loại nhà cung cấp chỉ là hội đồng .NET và họ không sử dụng bất kỳ loại F # cụ thể nào. Các ITypeProvider
interface có thể được tiêu thụ bởi bất kỳ ngôn ngữ .NET bao gồm C#, vì vậy nếu C# thiết kế muốn, họ có thể tái sử dụng tất cả các nhà cung cấp lớn đã được xây dựng cho F #.
Vì vậy, hãy gửi đề xuất này đến C# user voice hoặc ủng hộ nó ở nơi khác (hoặc thuyết phục nhóm Mono thực hiện điều này!) Và có lẽ nó sẽ được thêm vào C# (vNext + 1 + ...
). Bây giờ, bạn sẽ chỉ nhận được tất cả các lợi ích trong F #.
Nguồn
2012-12-07 23:44:18
Điều này phải ở dạng wiki cộng đồng. Tôi tin rằng nó sẽ châm ngòi cho những cuộc thảo luận khá dài. –