我正在尝试将单独的类型化数据集数据表传递给相同的方法。数据表相似,但不同。 该方法对数据表执行相同的功能。 与其本质上复制方法并根据数据表类型更改参数类型,有没有办法像为数据表创建自定义接口一样做一些事情,这样我就可以有一个具有接口类型参数的方法?
我目前拥有的:
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
字段,并且您需要帮助程序方法来初始化它。这是动态的一个很好的用例。另一种方法是让所有实体继承一个接口。