Estoy intentando imprimir de forma recursiva a cabo todas las propiedades de los objetos y una propiedades de tipo sub etc. Mi modelo de objetos es la siguiente ...f # coincidencia de patrones con tipos
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 ;
}
Y mi recursividad se basa en la después de la coincidencia de patrones ...
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
en el depurador veo que currObj es de tipo string, int, float, etc, pero siempre salta al caso defualt en la parte inferior. ¿Alguna idea de por qué está pasando esto?
el compilador me dice: el campo, constructor o miembro GetValue 'no está definido – PhilBrown
@philbrowndotcom - Creo que hay que hacer un molde. – ChaosPandion