tengo dos interfaces IHeaderRow, y IDetailRowde fundición entre las clases que comparten la misma interfaz de
I tienen entonces un objeto que implementa tanto RawRow: IHeaderRow, IDetailRow
entonces necesito echarlo a HeaderRow que implementa IHeaderRow.
Pero cuando lo intento, termina siendo nulo o dando una excepción.
puedo emitir ObjectRawRow a cualquier interfaz IHeaderRow o IDetailRow
var ObjectIHeaderRow = ObjectRawRow as IHeaderRow;
var ObjectIDetailRow = ObjectRawRow as IDetailRow;
Pero no puedo emitir ObjectRawRow a HeaderRow o ObjectIHeaderRow a HeaderRow.
que arroja el error No se puede convertir tipo de fuente 'IA' para apuntar tipo 'A'
tengo que echó en la clase real HeaderRow.
¿Pensamientos?
EDIT:
A pesar de que la creación de una conversión explícita se hizo cargo de la cuestión que pensé en dar respuesta a las personas que se preguntan, por qué estaba haciendo lo que era.
En resumen, estoy procesando secuencialmente un archivo. Linea por linea. Leí la fila en RawRow, y hasta que veo algunos valores, realmente no sé qué tipo de fila va a ser. Entonces quise lanzarlo al tipo correcto.
¿Qué tipo es 'ObjectRawRow' declarado? – SLaks
@SLaks, ObjectRawRow es RawRow (que implementa IHeaderRow y IDetailRow) – CaffGeek
una forma más agradable de hacer esto podría ser simplemente hacer que RawRow crea una instancia apropiada (actuando como * Factory *), utilizando un constructor de copia si lo desea. –