c#DAL - 业务对象的接口

时间:2011-01-17 12:39:33

标签: c# generics reflection interface

我有一个报告界面,它有一个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#的有限理解不允许我看到它。

1 个答案:

答案 0 :(得分:0)

我个人首先会问自己真的是否需要一个界面。如果实现它的类真的本质上不同(不仅仅是报告类型),那将是这种情况。 如果没有,即所有实施类基本上都是“记者”,那么是的,有一种更方便的方法可以做到这一点:

  • 撰写父摘要报告
  • 拥有虚拟运行方法和 CustomerID 访问者
  • 继承你的“Reporter”课程