Как насчет:
public static LiteCollection<T> Get(string tableName)
{
return ConnectToDB().GetCollection<T>(tableName);
}
Это называется:
var table = Get<Customer>("customers");
Обновление
К сожалению, на самом деле невозможно избавиться от универсального типа,в противном случае ваш потребляющий код не знает, что он возвращает.Таким образом, минимум, который был бы возможен, был бы
var table = Get<Customer>();
В этом случае вашей реализации нужен какой-то тип преобразователя из типа в имя таблицы.Для этой цели я мог бы подумать о трех возможностях (которые вы также можете объединить):
- В классе есть внутренний
Dictionary<Type, string>
, в который вручную вводятся все имена таблиц для данного типа. - Соглашение состоит в том, что для каждого
T
имя таблицы является множественной строкой имени типа, тогда вам необходим метод множественного числа , который возвращает Pluralize(typeof(T).Name)
. - Отражая васитерируйте производные
DBContext
, извлеките все свойства DBSet<>
и предварительно заполните словарь из первой возможности, используя общий аргумент из DBSet<>
и имя свойства.