1

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

我目前拥有的:

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)
}
4

1 回答 1

0

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

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

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

于 2012-12-13T17:27:11.310 回答