重载方法,该方法将具有不同类型的通用列表作为参数

时间:2009-05-29 16:05:15

标签: c# .net generics overloading

如何重载一个采用不同类型的通用列表作为参数的方法?

例如:

我有两种方法:

private static List<allocations> GetAllocationList(List<PAllocation> allocations)
{
    ...
}

private static List<allocations> GetAllocationList(List<NPAllocation> allocations)
{
    ...
}

有没有办法将这两种方法合并为一种?

2 个答案:

答案 0 :(得分:4)

当然可以......使用泛型!

private static List<allocations> GetAllocationList<T>(List<T> allocations) 
   where T : BasePAllocationClass
{

}

这假设您的“分配”,“PAllocation”和“NPAllocation”都共享一些名为“BasePAllocationClass”的基类。否则,您可以删除“where”约束并自行进行类型检查。

答案 1 :(得分:1)

如果您的PAllocation和NPAllocation共享一个公共接口或基类,那么您可以创建一个只接受这些基础对象列表的方法。

但是,如果他们不这样做,但您仍希望将两种(或更多种)方法合并为一种,则可以使用泛型来完成。如果方法声明类似于:

private static List<allocations> GetCustomList<T>(List<T> allocations)
{
    ...
}

然后你可以使用:

来调用它
GetCustomList<NPAllocation>(listOfNPAllocations);
GetCustomList<PAllocation>(listOfPAllocations);