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/