İlgili kayıtları tanımlamanın bir yolunu istiyorum. Örneğin,Kayıt varyasyonları F #
type Thing = { field1: string; field2: float }
type ThingRecord = { field1: string; field2: float; id: int; created: DateTime }
veya çok klişe yazmaya gerek kalmadan, birinden diğerine dönüştürmek için bir yol ile birlikte
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 }
. Tam Hatta ilk örnek olacaktır:
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
Eğer field10
vb kalkmak gibi, bir yükümlülük olarak alır.
Şu anda yansımayı kullanarak güvensiz (ve yavaş) bir şekilde yapıyorum.
with
sözdizimi için, söz konusu gereksinimi karşılayacak şekilde kullanıcı tanımlarını kaydetmek için genişletilecek bir istek ekledim.
Ama bunu yapmak için belki de güvenli bir yol var mı? Belki tip sağlayıcıları ile?
Bummer, Gelecek hafta, hiç kimsenin mevcut bir çözümü olmasaydı yapmayı planlıyordum, ama tip sağlayıcıların kayıt türlerini desteklemediği (şaşırtıcı) gerçek, bu fikri bir şekilde öldürüyor. –
Eh, iki haftanız varsa, her zaman tip sağlayıcısı kayıt türlerini yayınlayarak başlayabilirsiniz;) – scrwtp
Tamamen istekli, ama bana birkaç gün kazandı: nereden başlarım? –