我正在开发一个庞大的旧项目,其中包含很多脆弱的代码,其中一些代码自.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 // } } }