Как сделать так, чтобы эта функция надежно приводила sourceValue к типу T, где sourceValue - bool, а T - int?
public static T ConvertTo<T>(Object sourceValue)
{
// IF IS OF THE SAME TYPE --> RETURN IMMEDIATELY
if (sourceValue is T)
return (T) sourceValue;
var val = ConvertTo(sourceValue, typeof (T));
return (T) val;
}
В настоящее время это вызывает исключение InvalidCastException при попытке преобразовать false в 0 и true в 1. Типы не предопределены, поэтому здесь должны использоваться непатентованные значения. Однако, единственный случай, когда это терпит неудачу, - это когда T: Int32 и sourceValue: Boolean.