У меня есть эти методы, и вы можете подумать, что я могу использовать его для других типов номеров. Есть ли способ, которым я могу объединить эти методы в один общий метод?Как я могу использовать общий метод здесь?
public long GetActiveDepartmentsQuotaOf (Func<Department, long> exp)
{
return Departments == null ? 0 : Departments.Where(d => d.Status == 1).Sum(exp);
}
public int GetActiveDepartmentsQuotaOf (Func<Department, int> exp)
{
return Departments == null ? 0 : Departments.Where(d => d.Status == 1).Sum(exp);
}
Я попытался это:
public T GetActiveDepartmentsQuotaOf<T> (Func<Department, T> exp)
{
return Departments == null ? 0 : Departments.Where(d => d.Status == 1).Sum(exp);
}
Но это неправильно синтаксически. Каков выход из этой ситуации? Я просто любопытно
Это просто опечатка или вы пытались отделить 'T' от' TGetActiveDepartmentsQuotaOf'? –
['Сам()' сам реализуется с несколькими перегрузками] (https://msdn.microsoft.com/en-us/library/bb548890 (v = vs.110) .aspx), как и ваши первые два метода. Нет интерфейса 'ISummable' или 'IAddable ' (аналог «IEquatiable '), который вы можете использовать для ограничения 'T', и вы не можете сказать' где T: int или T: long или T: double' , Вы просто не можете добраться отсюда (кроме чем-то уродливого с отражением). Я не раз хотел, чтобы я мог. –