私はこれらの方法を持っています。あなたは他の番号タイプについてもそうするかもしれないと思うかもしれません。これらのメソッドを1つの汎用メソッドにマージする方法はありますか?ここで汎用メソッドを使用するにはどうすればよいですか?
public T GetActiveDepartmentsQuotaOf<T> (Func<Department, T> exp)
{
return Departments == null ? 0 : Departments.Where(d => d.Status == 1).Sum(exp);
}
しかし、間違った構文的に:
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);
}
は、私はこれを試してみました。この状況から脱出する方法は何ですか?私は
Enumerable.Sum
方法のみまとめることができ、特定のタイプ(例えば
int
、
double
、
float
)のIEnumerables上で動作しますので、これは、動作しません
はちょうどタイプミスか、 'TGetActiveDepartmentsQuotaOf'から' T'を分けてみましたか? –
最初の2つの方法と同じように['Sum()'自体は複数のオーバーロードで実装されています](https://msdn.microsoft.com/en-us/library/bb548890(v=vs.110).aspx)。あなたは 'T:intかT:longかT:doubleか'と言うことはできませんが、 'ISummable 'または 'IAddable'( 'IEquatiable ' 。あなたはちょうどここからそこに着くことができません(反射を伴う醜いもの以外)。私は一度はできることを望んできました。 –