C# と generics と template

List の全要素を足しあわせるみたいなことをしたい。具体的には、

 public static T get_total(List l) {
   T t;
   foreach (T v in l) t = t + v;
   return t;
 }

これが、C# だと書けない。T に加算命令が定義されていることを記述できない。じゃぁ、かといって四則演算が定義されている interface みたいなのを作るのも、なんか気持ち悪い。と思ったが、OCaml でもできないか。あきらめるかなぁ・・・。