У меня здесь небольшая проблема с моим мозгом.Интерфейс, базовый класс или что?
Скажите, что у меня есть страница отчета, которая может содержать либо график, либо данные типа datatable. Но страница имеет несколько общих компонентов, например заголовок, номер страницы, общую информацию отчета и т. Д.
В настоящее время я создал класс PageBase с общими полями данных, и у меня есть класс PageGraph и класс PageTable, которые наследуются от базового класса. (Я также создал интерфейс Ipage, но VS/R # говорит мне, что это излишним, поскольку все поля включены в базовый-класс)
Мой код выглядит примерно так:
var data = new List<IPage>();
pageItems.Where().OrderBy().ForEach(pageData => {
var page = pageData.PageType == 0 ? new PageGraph() : new PageTable(); // <- this one errs out.
page.header = pageData.header;
page.pageNumber = someCounter;
page.otherMetaData = pageData.otherMetaData;
if (pageData.PageType == PageTypes.Graph) {
// Fill graph fields etc.
...
Как я могу создать экземпляр правильного класса на основе переменной pageData.PageType?
Язык C#.
Что вы заполняете 'PageXxx'? В чем разница между инициализацией двух типов страниц? Для чего у вас эти классы? И т.д. Рассмотрите возможность создания графика/таблицы отдельного объекта и ссылки на него из объекта страницы. Наследование менее полезно, чем кажется. –
Я получаю «Нет никакого неявного преобразования между PageTable и PageGraph» –