次のように、特定の型の LINQ 式を作成してコンパイルすることで、これを行うことができます。
private static IDictionary<Type,object> MultByType = new Dictionary<Type,object>();
public static T Multiply<T>(T a, int b) {
    Func<T,int,T> mult;
    object tmp;
    if (!MultByType.TryGetValue(typeof (T), out tmp)) {
        var lhs = Expression.Parameter(typeof(T));
        var rhs = Expression.Parameter(typeof(int));
        mult = (Func<T,int,T>) Expression.Lambda(
            Expression.Multiply(lhs, Expression.Convert(rhs, typeof(T)))
        ,   lhs
        ,   rhs
        ).Compile();
        MultByType.Add(typeof(T), mult);
    } else {
        mult = (Func<T,int,T>)tmp;
    }
    return mult(a, b);
}
式が使用されるたびに再コンパイルするのを避けるために、式を辞書にキャッシュすることができます。
このアプローチには一定の制限があることに注意してください。
Tbyの乗算Tが定義されていることが期待されます。 
T乗算の出力は、変換なしであると予想されます。intこれは、より小さい型には当てはまりません。 
- タイプは からの変換をサポートする必要があり
intます。 
これはコンパイル時にチェックされません。