gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:19:23 25 4
gpt4 key购买 nike

我正在处理一个庞大的旧项目,其中包含很多脆弱的代码,其中一些代码自 .NET 1.0 时代以来就已经存在,并且已经并将由其他人处理...所以我希望尽可能少地改变。

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

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

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

但客户希望每个部门都像标题一样呈现,每个部门下面都有一个员工列表。例如:

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

我试图通过从自动生成的 Row 对象继承分层对象来做到这一点。例如:

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

这样我就可以通过使用 Department 对象的集合作为 DataSource 来将数据嵌套在报表中,每个 Department 对象都会将其雇员列表放入一个子报表中。

问题是这给了我一个 The type Data.DataSet.DepartmentRow has no constructors defined 错误。当我尝试制作构造函数时,例如

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

除了第一个错误之外,我还收到一个 'Data.DataSet.DepartmentRow(System.Data.DataRowBuilder)' is unaccessible due to its protection level. 错误。

有没有办法完成我想做的事情?或者还有其他我应该完全尝试的东西吗?

最佳答案

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

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
//
}
}
}

关于c# - 我可以创建一个继承自强类型 DataRow 的自定义类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2813606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com