有没有一种方法可以为不同名称空间中的同名扩展方法指定使用哪种扩展方法?

时间:2018-08-24 08:28:24

标签: c# linq extension-methods

使用以下代码段的简单示例:

using System.Data;
using CustomerNameSpace;
...
...
CDataSet.CustomerDataTable dtCustomer = GetCustomer();

var customersWithName = dtCustomer.AsEnumerable()
    .Where(x => x.Name != null)
    .CopyToDataTable();

由于某种原因,我的同事在CopyToDataTable()中创建了扩展方法CustomerNameSpace

在这种情况下,程序同时使用名称空间System.DataCustomerNameSpace

现在两者都包含扩展方法CopyToDataTable()

在下面的示例代码段中,有没有一种方法可以指定这两个名称空间中要使用的扩展方法?

1 个答案:

答案 0 :(得分:3)

如果您在代码中绝对需要两个名称空间,则唯一的区分方法是将该方法称为“常规”静态方法而不是扩展方法:

var customers = dtCustomer.AsEnumerable()
    .Where(x => x.Name != null);
CustomerNameSpace.MyExtensionsClass.CopyToDataTable(customers);