繁体   English   中英

c#DAL-业务对象的接口

[英]c# DAL - Interface for business objects

我有一个具有Run方法的报表界面。

有多种类型的报告可实现此接口,并且每种报告都会运行自己的类型的报告,并从不同的表中获取数据。

每个报表使用其自己的数据上下文获取数据,然后使用填充数据,然后将它们作为数组返回(我希望至少能够返回类似于列表的内容,但是因为您必须定义列表,键入它会使难度增加)。

然后使用反射来查找返回数据的属性。

我希望我已经解释得足够好了!

有更好的方法吗?

按要求:

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();
        }
    }
}

然后,另一个类对数据进行foreach操作,并使用反射来查找字段名称和值,并将其放入xml文件中。

就目前而言,一切正常-我只是不禁想到有一种更好的方法-可能是由于我对C#的有限了解还无法让我看到。

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

  • 编写父摘要报告
  • 具有虚拟Run方法和CustomerID访问器
  • 从那里继承“ Reporter”类

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM