C# 强类型数据集 - 将不同的数据表传递给相同的方法(接口?



我正在尝试将单独的类型化数据集数据表传递给相同的方法。数据表相似,但不同。 该方法对数据表执行相同的功能。 与其本质上复制方法并根据数据表类型更改参数类型,有没有办法像为数据表创建自定义接口一样做一些事情,这样我就可以有一个具有接口类型参数的方法?

我目前拥有的:

private PassdownDataset.SalesOrdersForManagerDataTable datatable1;
private PassdownDataset.SalesOrdersDataTable datatable2;
public SomePublicMethod()
{
PopulateDepartmentName(datatable1);
PopulateDepartmentName(datatable2);
}
private void PopulateDepartmentName(PassdownDataset.SalesOrdersForManagerDataTable dt)
{
//(operations performed on datatable)
}
private void PopulateDepartmentName(PassdownDataset.SalesOrdersDataTable dt)
{
//(operations performed on datatable)
}

我想要的:

private PassdownDataset.SalesOrdersForManagerDataTable datatable1;
private PassdownDataset.SalesOrdersDataTable datatable2;
public SomePublicMethod()
{
PopulateDepartmentName(datatable1);
PopulateDepartmentName(datatable2);
}
private void PopulateDepartmentName(
               PassdownDataset.CommonInterfaceForBothDataTables dt)
{
//(operations performed on datatable)
}

我敢肯定,您可以使用继承来解决这个问题。但这可能会变得尴尬和被迫。

我发现 C# 4 中添加的动态功能非常适合此类事情。主要缺点是会丢失静态类型和重构友好性。我认为如果您对动态的使用非常本地化(例如包含在单个帮助程序方法中),则可以。

例如,假设所有数据库实体都有一个CreateDateTime字段,并且您需要帮助程序方法来初始化它。这是动态的一个很好的用例。另一种方法是让所有实体继承一个接口。

最新更新