nullables を指定された小数点以下の桁数に丸めるメソッドを作成しようとしています。理想的には、許可として Double と Decimals の両方で使用できるように、これをジェネリックにしたいと考えていMath.Round()
ます。
以下に記述したコードは、どのオーバーロードを呼び出すかを知ることができないため、メソッドを (当然のことながら) 解決できないため、コンパイルされません。これはどのように達成されますか?
internal static T? RoundNullable<T>(T? nullable, int decimals) where T : struct
{
Type paramType = typeof (T);
if (paramType != typeof(decimal?) && paramType != typeof(double?))
throw new ArgumentException(string.Format("Type '{0}' is not valid", typeof(T)));
return nullable.HasValue ? Math.Round(nullable.Value, decimals) : (T?)null; //Cannot resolve method 'Round(T, int)'
}