我有一个报告界面,它有一个Run方法。
有不同类型的报告实现此接口,每个报告都运行自己的报告类型,从不同的表中获取数据。
每个报告使用自己的数据上下文获取数据,然后填充Business Objects,并且当它们作为数组返回时(我希望能够至少返回类似列表的内容,但因为你必须定义列表类型会让它变得有点难度。)
然后使用反射来找出返回数据的属性。
我希望我已经解释得这么好了!
有更好的方法吗?
按要求:
public interface IReport
{
int CustomerID { get; set; }
Array Run();
}
public class BasicReport : IReport
{
public int CustomerID { get; set; }
public virtual Array Run()
{
Array result = null;
using (BasicReportsDataContext brdc = new BasicReportsDataContext())
{
var queryResult = from j in brdc.Jobs
where j.CustomerID == CustomerID
select new JobRecord
{
JobNumber = j.JobNumber,
CustomerName = c.CustomerName
};
result = queryResult.ToArray();
}
}
}
然后另一个类对数据进行预测,并使用反射来查找字段名称和值,并将其放入xml文件中。
因为它的一切正常 - 我不禁想到有更好的方法 - 也许我对C#的有限理解不允许我看到它。
答案 0 :(得分:0)
我个人首先会问自己真的是否需要一个界面。如果实现它的类真的本质上不同(不仅仅是报告类型),那将是这种情况。 如果没有,即所有实施类基本上都是“记者”,那么是的,有一种更方便的方法可以做到这一点: