Ich versuche, rekursiv alle Eigenschaften eine Objekte auszudrucken und Sub-Typ-Eigenschaften etc. Meine Objektmodell wird wie folgt ...f # Muster mit Typen passend
type suggestedFooWidget = {
value: float ;
hasIncreasedSinceLastPeriod: bool ;
}
type firmIdentifier = {
firmId: int ;
firmName: string ;
}
type authorIdentifier = {
authorId: int ;
authorName: string ;
firm: firmIdentifier ;
}
type denormalizedSuggestedFooWidgets = {
id: int ;
ticker: string ;
direction: string ;
author: authorIdentifier ;
totalAbsoluteWidget: suggestedFooWidget ;
totalSectorWidget: suggestedFooWidget ;
totalExchangeWidget: suggestedFooWidget ;
todaysAbsoluteWidget: suggestedFooWidget ;
msdAbsoluteWidget: suggestedFooWidget ;
msdSectorWidget: suggestedFooWidget ;
msdExchangeWidget: suggestedFooWidget ;
}
Und meine Rekursion auf die basiert folgender Mustervergleich ...
let rec printObj (o : obj) (sb : StringBuilder) (depth : int)
let props = o.GetType().GetProperties()
let enumer = props.GetEnumerator()
while enumer.MoveNext() do
let currObj = (enumer.Current : obj)
ignore <|
match currObj with
| :? string as s -> sb.Append(s.ToString())
| :? bool as c -> sb.Append(c.ToString())
| :? int as i -> sb.Append(i.ToString())
| :? float as i -> sb.Append(i.ToString())
| _ -> printObj currObj sb (depth + 1)
sb
im Debugger sehe ich, dass currObj vom Typ String, int, float, usw., aber es springt immer auf den defualt Fall an der Unterseite. Irgendeine Idee, warum das passiert?
der Compiler sagt mir: das Feld, Konstruktor oder Mitglied ‚GetValue‘ ist nicht – PhilBrown
@philbrowndotcom definiert - ich glaube, Sie brauchen eine Besetzung zu tun. – ChaosPandion