微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 我可以创建一个继承自强类型DataRow的自定义类吗?

我正在开发一个庞大的旧项目,其中包含很多脆弱的代码,其中一些代码自.NET 1.0时代以来一直存在,并且已经并且将会被其他人处理……所以我想要尽可能少地改变.

我的解决方案中有一个包含DataSet.xsd的项目.该项目编译为单独的程序集(Data.dll).数据库模式包括或多或少按层次排列的几个表,但表实际链接在一起的唯一方法是通过连接.我可以得到,例如来自自动生成代码的DepartmentRow和EmployeeRow对象. EmployeeRow通过联接包含来自员工对应的DepartmentRow的信息.

我正在制作一份新报告,以查看多个部门及其所有员工.如果我使用现有的数据访问方案,我将能够获得的是类似电子表格的输出,其中每个员工在一行上表示,部门信息在其相应的列中反复重复.例如.:

Department1...Employee1...
Department1...Employee2...
Department2...Employee3...

但客户想要的是让每个部门都像标题一样呈现,每个部门下面都有员工列表.例如.:

- Department1...
      Employee1...
      Employee2...
+ Department2...

我试图通过从自动生成的Row对象继承分层对象来实现此目的.例如.:

public class Department : DataSet.DepartmentRow {
    public List<Employee> Employees;
}

这样我就可以使用Department对象的集合作为DataSource将数据嵌套在报表中,每个对象都将其Employees列表放在子报表中.

问题是这给了我一个类型Data.DataSet.DepartmentRow没有构造函数定义的错误.当我尝试制作一个构造函数时,例如

public class Department : DataSet.DepartmentRow {
    private Department() { }
    public List<Employee> Employees;
}

我得到’Data.DataSet.DepartmentRow(System.Data.DaTarowBuilder)’由于其保护级别而无法访问.除了第一个错误之外的错误.

有没有办法完成我想要做的事情?或者还有什么我应该完全尝试的?

解决方法

我能够在快速测试中继承数据行.请注意,这与数据行类位于同一程序集中.数据行类的构造函数标记为“内部”.

using System;
using System.Data;

namespace Blah
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    public class Class1 : MyDataSet.MyTableRow
    {
        public Class1(DaTarowBuilder rb) : base(rb)
        {
            //
            // Todo: Add constructor logic here
            //
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐