我有這些方法,你可能會認爲我也可能有其他數字類型。有什麼方法可以將這些方法合併爲一個通用方法?如何在此處使用通用方法?
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'分開嗎? –
['Sum()'本身是通過多重載實現的](https://msdn.microsoft.com/en-us/library/bb548890(v = vs.110).aspx),就像前兩種方法一樣。沒有可用於約束'T'的'可編輯的'或'IAddable '接口(類似於'IEquatiable '),並且您不能說'where T:int或T:long或T:double' 。你不能從這裏到達那裏(除了一些醜陋的東西)。我不止一次希望我能。 –