我有以下方法
static DataContext dc;
public static Int32 GetTotalRecordsForTable1()
{
DataContext dc = new DataContext ();
return dc.GetTable<Table1>().Count();
}
public static Int32 GetTotalRecordsForTable2()
{
DataContext dc = new DataContext ();
return dc.GetTable<Table2>().Count();
}
和儿子。
我希望有一个接受表作为参数的方法:
public static Int32 GetTotalRecordsForTable1(Table<t> myTable)
{
DataContext dc = new DataContext ();
return dc.GetTable<myTable>().Count();
}
我该怎么办?
答案 0 :(得分:3)
您应该制作method generic。
public static Int32 GetTotalRecordsForTable<T>(Table<T> myTable)
where T : class
{
DataContext dc = new DataContext ();
return dc.GetTable<T>().Count();
}
在上面的示例中,您实际上并未使用myTable
。如果您不需要它,可以将其删除:
public static Int32 GetTotalRecordsForTable<T>()
where T : class
{
DataContext dc = new DataContext ();
return dc.GetTable<T>().Count();
}
// call these methods like:
GetTotalRecordsForTable(myTable); // T as Table1 is inferred
GetTotalRecordsForTable<Table1>(); // T as Table1 is explicitly specified
答案 1 :(得分:2)
我想你想要这个?
public static Int32 GetTotalRecordsForTable1<T>()
{
DataContext dc = new DataContext ();
return dc.GetTable<T>().Count();
}
您甚至不需要参数,因为看起来您只想传递泛型类型来检索数据。您可以添加type constraint来限制T
的内容,也可以
答案 2 :(得分:0)
使用泛型,就像GetTable
方法本身一样:
public static Int32 GetTotalRecordsForTable<TTable>()
{
DataContext dc = new DataContext ();
return dc.GetTable<TTable>().Count();
}
如果你的所有表都实现了一个接口,你可以添加一个通用约束来限制泛型参数:
public static Int32 GetTotalRecordsForTable<TTable>()
where TTable : ITable
然后打电话就像你打电话给GetTable
:
var count = GetTotalRecordsForTable<Table1>();