No tengo tiempo de probarlo ahora, pero mirá las cosas que se pueden hacer con un poco de cancha
http://www.clariusconsulting.net/blogs/kzu/archive/2009/03/27/129897.aspx 2009/5/7 Leonardo Micheloni <[email protected]>: > 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/ > >
