Я работаю с пользовательским механизмом отчетов, который использует XML и XSL для вывода данных отчета в браузер.Каждый отчет может иметь несколько параметров различных типов значений (целые числа, строки, даты).
Каждый отчет имеет свой собственный класс (унаследованный от базового класса отчета) и XSLT, который получает данные из БД на основе параметров, генерирует XML и стилизует его с помощью XSLT.Однако в настоящее время параметры перечислены индивидуально в каждом классе.Я думаю, что более эффективно создать класс Parameter, иметь общий список всех параметров, добавлять параметры в список при запросе данных отчета, тогда базовый класс может циклически проходить по списку параметров и выводить соответствующий XML,
Вот как теперь выглядит код:
public class Report
{
//Common functions used by all reports
}
public class OrderDetailReport : Report
{
public long? Parameter1 { get; set; }
public long? Parameter2 { get; set; }
public XElement CreateXML()
{
var xml = new XElement();
xml.Add(GetXMLParameters());
//Get Data and generate XML
return xml;
}
public XElement GetXMLParameters()
{
var parameters = new XElement("Parameters",
new XElement("Parameter",
new XAttribute("Name", "Parameter1"),
new XAttribute("Value", Parameter1)),
new XElement("Parameter",
new XAttribute("Name", "Parameter2"),
new Attribute("Value", Parameter2)));
return parameters;
}
}
Как должен выглядеть класс Parameter
, чтобы он мог обрабатывать все различные типы значений и иметь возможность форматировать значение, котороеотображается на экране?
РЕДАКТИРОВАТЬ:
Я хочу иметь возможность переместить функцию GetXMLParameters()
в базовый класс и получить список что-то вроде List<Parameter>
в базе, через которую GetXMLParameters()
будет проходить цикл и создавать XML.
Это позволит избежать GetXMLParameters()
в каждом CustomReport
классе.
Спасибо.Я надеюсь, что это было ясно.
Оран