尝试执行以下操作:
public static class Qbo<T> where T : class
{
public static List<Items> Convert(List<T> list1, List<T> list2)
{
// Merging lists of different types into one list
}
}
这样打电话:
var items = Qbo<Bill>.Convert(bills, billPayments);
var moreItems = Qbo<Invoice>.Convert(invoices, payments);
但是我收到错误,因为该方法尝试接受第一个列表类型作为第二个列表类型。有什么想法吗?
答案 0 :(得分:5)
当你期望类型参数的不同数据类型时,你也应该以不同的方式声明:
public static List<Items> Convert<T, U>(List<T> list1, List<U> list2)
您还应注意,您必须将类型参数添加到上面所示的方法声明中,除非它们尚未通过您所在的类声明。
答案 1 :(得分:3)
通过编辑,您可以更清楚地了解您的需求。您已经从类定义中获得T
,但现在需要该方法的另一种泛型类型。因此,也要使方法调用泛型:
public static class Qbo<T> where T : class
{
public static List<Items> Convert<U>(List<T> list1, List<U> list2)
// ^^^ ^^^
{
// Merging lists of different types into one list
}
}
答案 2 :(得分:2)
我假设您的参数属于不同类型,因此您将使用多个泛型。我相信它看起来应该是这样的。
public static List<Items> Convert<T, U> (List<T> list1, List<U> list2)
{
}
以下是关于泛型的文档,其中应包含具有多个泛型的方法。 https://msdn.microsoft.com/en-us/library/ms379564(v=vs.80).aspx