仅基于返回类型重载

Roh*_*nsi 4 c# overloading

我有一种情况,我想从这个函数返回List <>

public DataTable GetSubCategoriesBySubCatID(Guid SubCategoryID)
Run Code Online (Sandbox Code Playgroud)

所以我想要的是

public List<SubCategories> GetSubCategoriesBySubCatID(Guid SubCategoryID)
Run Code Online (Sandbox Code Playgroud)

我知道仅基于返回类型不支持重载,我只是不想在两个函数中复制相同的代码.

什么是最好的方法来实现这一点,而不会影响第一个功能的参考

Jon*_*eet 5

给他们不同的名字:

public DataTable GetSubCategoryTableBySubCatID(Guid subCatID)

public List<SubCategory> GetSubCategoryListBySubCatID(Guid subCatID)
Run Code Online (Sandbox Code Playgroud)

除了其他任何东西,这将使您在阅读调用代码时更清楚您感兴趣的方法.

如果这些应该以通用方式实现,请编写包含公共核心的私有方法,并从两个公共方法中调用它.例如,您可以使用委托来执行"我已找到结果,将其添加到您的集合"部分,或使用迭代器块:

// "action" will be called on each sub-category
private void FindSubCategoriesBySubCatID(Guid subCatID,
                                         Action<SubCategory> action)

private IEnumerable<SubCategory> FindSubCategoriesBySubCatID(Guid subCatID)
Run Code Online (Sandbox Code Playgroud)