Tôi muốn một số cách để xác định các hồ sơ liên quan. Ví dụ,Ghi lại các biến thể trong F #
type Thing = { field1: string; field2: float }
type ThingRecord = { field1: string; field2: float; id: int; created: DateTime }
hoặc
type UserProfile = { username: string; name: string; address: string }
type NewUserReq = { username: string; name: string; address: string; password: string }
type UserRecord = { username: string; name: string; address: string; encryptedPwd: string; salt: string }
cùng với một cách để chuyển đổi từ một đến khác, mà không cần phải viết rất nhiều soạn sẵn. Ngay cả ví dụ đầu tiên đầy đủ sẽ là:
type Thing =
{ field1: string
field2: float }
with
member this.toThingRecord(id, created) =
{ field1 = this.field1
field2 = this.field2
id = id
created = created } : ThingRecord
and ThingRecord =
{ field1: string
field2: float
id: int
created: DateTime }
with
member this.toThing() =
{ field1 = this.field1
field2 = this.field2 } : Thing
Khi bạn nhận được tối đa field10
v.v., nó trở thành trách nhiệm pháp lý.
Tôi hiện đang thực hiện việc này theo cách không an toàn (và chậm) bằng cách sử dụng phản chiếu.
Tôi đã thêm một yêu cầu cho cú pháp with
để được mở rộng để ghi lại các định nghĩa trên uservoice, điều này sẽ đáp ứng nhu cầu này.
Nhưng có lẽ có một cách an toàn để thực hiện việc này không? Có thể với các nhà cung cấp loại?
Rất tiếc, tôi đã lên kế hoạch thực hiện việc này vào tuần tới nếu không có giải pháp hiện có, nhưng thực tế (đáng ngạc nhiên) rằng các nhà cung cấp loại không hỗ trợ các loại bản ghi phần nào giết chết ý tưởng đó. –
Vâng, nếu bạn có hai tuần, bạn luôn có thể bắt đầu bằng cách làm cho nhà cung cấp loại phát ra các loại bản ghi;) – scrwtp
Hoàn toàn sẵn sàng, nhưng hãy tiết kiệm cho tôi một vài ngày: tôi sẽ bắt đầu từ đâu? –