hola, gracias Quique y Leonardo por las respuestas.
La solucion de Quique no estaria del todo mal, no es tan prolijo como quedaria con el uso de typeof, pero es una buena solucion, al menos me evita el uso de los if que quedan espentoso. Y hace uso de la redefinicion de metodo para resolver a cual metodo debe asignar el generics. Leonardo, si Linq se podria usar estoy con .net 3.5 asi que seria una alternativa, pero la verdad no se como acoplarlo. Tendrias un ejemplo de implementacion, porque la verdad no me lo imagino como hacer jugar linq con generics en este caso. Gracias Saludos --- El jue 7-may-09, Leonardo Micheloni <[email protected]> escribió: De: Leonardo Micheloni <[email protected]> Asunto: [puntonet] Generics invocacion generica (utilizando typeof) Para: [email protected] Fecha: jueves, 7 de mayo de 2009, 11:51 am con linq? 2009/5/7 Leandro Tuttini <[email protected]>: > Hola, > > Les planteo la siguiente situacion. > > Tengo las siguientes clases: > > public abstract class FormatInfo > { > } > > public class FieldFormatInfo : FormatInfo > { > } > > public class ButtonFormatInfo : FormatInfo > { > } > > public class OriginFormatInfo : FormatInfo > { > } > > public class BlankFormatInfo : FormatInfo > { > } > > > Y la siguiente implementacion: > > > foreach (FormatInfo format in pivotTableInfo.Format) > { > //ApplyFormat<typeof(format)>(sheet, pivotTable, format); > > if (format is Mapping.PivotTableInfo.ButtonFormatInfo) > ApplyFormat<ButtonFormatInfo>(sheet, pivotTable, > (ButtonFormatInfo)format); > else if (format is Mapping.PivotTableInfo.FieldFormatInfo) > ApplyFormat<FieldFormatInfo>(sheet, pivotTable, > (FieldFormatInfo)format); > else if (format is Mapping.PivotTableInfo.OriginFormatInfo) > ApplyFormat<OriginFormatInfo>(sheet, pivotTable, > (OriginFormatInfo)format); > else if (format is Mapping.PivotTableInfo.BlankFormatInfo) > ApplyFormat<BlankFormatInfo>(sheet, pivotTable, > (BlankFormatInfo)format); > > } > > > pivotTableInfo.Format, es una propiedad del tipo: > > public List<FormatInfo> Format { get; set; } > > > Y ApplyFormat() es un metodo: > > private void ApplyFormat<T>(Office.Worksheet sheet, Office.PivotTable > pivotTable, T format) where T : FormatInfo > { > } > > > > Como veran funciona sin problema, pero la verdad no queda nada agradable a > la vista, en realidad yo reduje un poco el ejemplo, hay unos 6 format mas > que hacen el if > bastante feo. > > por eso la cuestion es porque no puedo hacer algo asi: > > foreach (FormatInfo format in pivotTableInfo.Format) > { > ApplyFormat<typeof(format)>(sheet, pivotTable, format); > } > > O sea la aplicacion del template seria dinamica. > > Se puede lograr algo parecido a esto ?, o la unica forma es con los if > descubriendo el tipo. > > Saludos > ________________________________ > Yahoo! Cocina > Recetas prácticas y comida saludable > Visitá http://ar.mujer.yahoo.com/cocina/ Yahoo! Cocina Recetas prácticas y comida saludable http://ar.mujer.yahoo.com/cocina/
