У меня есть два интерфейса IHeaderRow и IDetailRowCasting между классами, которые разделяют один и тот же интерфейс
Я тогда объект, который реализует как RawRow: IHeaderRow, IDetailRow
тогда мне нужно лить его в HeaderRow который реализует IHeaderRow.
Но когда я пытаюсь, оно заканчивается тем, что оно является нулевым или дает исключение.
Я могу бросить ObjectRawRow либо интерфейс IHeaderRow или IDetailRow
var ObjectIHeaderRow = ObjectRawRow as IHeaderRow;
var ObjectIDetailRow = ObjectRawRow as IDetailRow;
Но я не могу бросить ObjectRawRow к HeaderRow или ObjectIHeaderRow к HeaderRow.
Он бросает ошибку Не удается преобразовать тип источника «IA» в целевой тип «А»
Мне нужно, чтобы бросить его в реальный класс HeaderRow.
Мысли?
EDIT:
Несмотря на создание явное приведение позаботилась о проблеме я думал, что дать ответ людям, интересно, почему я делаю то, что я был.
Короче говоря, я последовательно обрабатываю файл. Построчно. Я прочитал строку в RawRow, и пока я не посмотрю несколько значений, я действительно не знаю, какой тип строки это будет. Затем я хотел отдать его правильному типу.
Какой тип 'ObjectRawRow' объявлен? – SLaks
@SLaks, ObjectRawRow - это RawRow (который реализует IHeaderRow и IDetailRow) – CaffGeek
. Лучшим способом сделать это может быть просто заставить RawRow создать экземпляр соответствующего экземпляра (действующего как * Factory *), используя конструктор копирования, если хотите. –