我会尝试尽可能明确,以防有更好的解决方案来解决我的问题而不是回答我的问题.
我在C#工作.
我有一个报告模板,可以包含任意数量的"功能".功能可能是信息表,饼图/条形图,列表等.我将报告生成为文本文件或PDF(将来可能还有其他选项).
到目前为止,我有一个IFeature接口,以及一些实现它的功能类型:ChartFeature,ListFeature等等.我读取了从数据库启用的功能列表,并将每个功能一起传递给方法以及数据ID,并且该方法返回一个填充IFeature的正确类型.
我还有一个IReportWriter接口TextReportWriter和PdfReportWriter实现.该接口有一个方法:AddFeature(IFeature).
问题是AddFeature每个作家最终看起来像:
public void AddFeature(IFeature)
{
InsertSectionBreakIfNeeded();
if(IFeature is TableFeature)
{
TableFeature tf = (TableFeature)feature;
streamWriter.WriteLine(tf.Title);
for(int row=0; row < tf.Data.First.Length; row++)
{
for(int column=0; i < tf.Data.Length; i++)
{
if(i != 0)
{
streamWriter.Write("|");
}
streamWriter.Write(feature.Data[column][row]);
}
}
}
else if(IFeature is ListFeature)
{
ListFeature lf = (ListFeature)feature;
streamWriter.Write(lf.Title + ": ");
bool first = true;
foreach(var v in …Run Code Online (Sandbox Code Playgroud)