.Net Türü verildiğinde, çalışma zamanında typeof<string>
deyin, string list = []
eşdeğeri nasıl oluşturulur?Belirli bir çalışma zamanı türünün boş bir listesi nasıl oluşturulur
Benim motivasyonum, kullanılarak ayrıştırılan değerlere dayalı bir kayıt oluşturmak için değerlerin obj[]
olarak iletilmesi gerektiğidir. Ben box
kullanarak argümanlar döküm oldum ve listeleri ile dışında çalıştı. Karşılaştığım sorun, boş bir liste dışı listenin kutulu ve kutudan çıkarılmamasıdır. döndürülen hata:
System.InvalidCastException: Unable to cast object of type
'Microsoft.FSharp.Collections.FSharpList`1[System.Object]'
to type
'Microsoft.FSharp.Collections.FSharpList`1[System.String]'.
Boş yazılan liste kutulu ve kutusuz edilebilir bir çalışma zamanı tipi, örn için bir liste yayınlamak için bir yol bulmaya çalıştık böylece <> 'dan türeyen bir tür, ancak şanssız.
type Test = {Names : string list}
// fails
let genericList = []
{Names = unbox (box genericList)}
//works
let typedList : string list = []
{Names = unbox (box typedList)}
//works
let genericNonEmptyList = ["Bill"]
{Names = unbox (box genericNonEmptyList)}
Bu, yansıma kullanılarak yapılabilir. Bununla birlikte, genel olarak, yeniden düşünmeniz gerektiğini belirten –
Seq.cast, ne istediğinizi yapmaz mı? Özür dilerim: OP: 'genericList |> Seq.cast'. –
s952163
John, bunun yansımasıyla nasıl yapılacağı hakkında ipuçları var mı?Ben "ahem" biraz yoldan bakmaya başladım ama görebildiğim kadarıyla bunu yapmanın açık bir yolu yok. – jbeeko